标签: subclassing

子类化int以获得十六进制表示

基本上我想访问所有标准蟒INT运营商,例如__and____xor__等,具体而言,每当结果终于印刷我希望它在十六进制格式表示.(有点像把我的计算器放到十六进制模式)

class Hex(int):
  def __repr__(self):
    return "0x%x"%self
  __str__=__repr__ # this certainly helps with printing

if __name__=="__main__":
  print Hex(0x1abe11ed) ^ Hex(440720179)
  print Hex(Hex(0x1abe11ed) ^ Hex(440720179))
Run Code Online (Sandbox Code Playgroud)

理想情况下,两行输出应为十六进制:0xfacade,但第一行输出十进制:16435934

有任何想法吗?

python hex representation subclassing

2
推荐指数
2
解决办法
1586
查看次数

Xcode:非常奇怪的错误继承我自己的类

我有一个带有自定义类的iPhone应用程序,我创建Detail的子类UIViewController.

我需要创建一个子类Detail,我想调用它ActivityDetail.所以我在ActivityDetail.h文件中写了以下内容:

#import <UIKit/UIKit.h>
#import "Detail.h"

@interface ActivityDetail : Detail {

}

@end
Run Code Online (Sandbox Code Playgroud)

问题是我收到编译器错误告诉我这个:

错误:无法找到'Detail'的接口声明,'ActivityDetail'的超类

奇怪的是:我可以将超类更改DetailUIView(例如),编译得到很多错误(显然),然后Detail再次更改超类,一切正常!但是,如果我随后改变了Detail类,那么问题从一开始就会回来......

我怎么解决这个问题?

iphone xcode subclassing

2
推荐指数
2
解决办法
2140
查看次数

在golang中对不同包中的对象进行子类化

我正在尝试为golang中的所有结构创建一个基础对象.出于某种原因,当我创建的新对象位于不同的包中时,我无法使其工作.它们在同一个包/文件夹中时工作正常.

例如,所有对象的基类

package Test

type BaseObject struct {
    base interface{}
}
Run Code Online (Sandbox Code Playgroud)

----子文件夹测试\东西---

创建一个新的TestObject,它是BaseObject的子类

package Stuff

import Test "Test"

type TestObject struct{
    Test.BaseObject
}
func (this *TestObject)DoSomething(){
    any reference to this.base or this.BaseObject.base fails!!!
}
Run Code Online (Sandbox Code Playgroud)

---在同一个文件夹中,everthing工程---

package Test

type TestObject struct{
    BaseObject
}
func (this *TestObject)DoSomething(){
    any reference to this.base works fine??
}
Run Code Online (Sandbox Code Playgroud)

go subclassing

2
推荐指数
1
解决办法
347
查看次数

Python使用自定义__new__对类进行子类化

有一个类(不是我创建的,来自第三方库)没有__init__声明(除了object's __init__),这是它的__new__:

def __new__(cls, uid):
    self = super().__new__(cls, uid)
    self._info = get_info_from_uid(uid)
    return self
Run Code Online (Sandbox Code Playgroud)

我不明白他们为什么不在__init__这里使用,但他们没有.

现在我想继承它并给它一个额外的属性; 在我检查类的源代码(仅文档)之前,我认为它只是__init__像其他人一样使用,所以这就是我所做的:

class MyClass(TheirClass):
    def __init__(self, uid, my_stuff=()):
        super().__init__(uid)
        self.my_stuff = my_stuff
Run Code Online (Sandbox Code Playgroud)

显然,这引发了一个object.__init__()不参加参数的TypeError .我应该如何将这个类子类化__new__?我只是覆盖__new__方法吗?

python inheritance subclassing python-3.x

2
推荐指数
1
解决办法
4353
查看次数

在继承 NSURLSession Swift 子类时,初始化器不会覆盖指定的初始化器

我想对 NSURLSession 类进行子类化,但我在初始化时遇到问题。基本上我重写构造函数并在那里初始化常量,authUrl然后调用父 init 方法。

class NSURLAuthSession: NSURLSession {
    let authUrl:NSURL;

    //Error: Initializer does not override a designated initializer from its superclass
    override init(configuration: NSURLSessionConfiguration, delegate: NSURLSessionDelegate?, delegateQueue queue: NSOperationQueue?){
        self.authUrl = NSURL.URLWithBaseURLString("http://192.168.10.105:8888/api/v1", pathSegments: ["users", "login"])!
        super.init(configuration: configuration, delegate: delegate, delegateQueue: queue)
    }
}
Run Code Online (Sandbox Code Playgroud)

从 NSURLSession 的源代码中我发现它有两个初始化器:

public /*not inherited*/ init(configuration: NSURLSessionConfiguration)
public /*not inherited*/ init(configuration: NSURLSessionConfiguration, delegate: NSURLSessionDelegate?, delegateQueue queue: NSOperationQueue?)
Run Code Online (Sandbox Code Playgroud)

我期望“最长”的初始化程序是指定的初始化程序,但事实并非如此。我怀疑指定的初始值设定项init()甚至没有在源代码中指定。如何覆盖初始化程序并设置配置NSURLSessionConfiguration

subclassing nsurlsession nsurlsessionconfiguration swift

2
推荐指数
1
解决办法
2480
查看次数

如何根据SQL行中的值创建正确的子类

当我研究如何在C#中为ASP.NET项目创建子类时,我感觉非常聪明,然后我发现了一个问题 - 我不知道如何根据SQL查询的结果创建正确子类的对象.

假设您有一个名为Animal的类和两个名为Zebra和Elephant的子类.你明白了吗?

我想要做的是执行一个SQL查询,如果返回的行有行["Type"] ="Zebra"然后加载一个Zebra对象(或者如果它是一个大象然后..).

所以,原则上,Animal类将有一个静态方法:

class Animal{
 public static Animal Load(DataRow row){
  if (row["Type"]=="Zebra"){
   return new Zebra();
  } 
}

class Zebra : Animal{
 //some code here
}
Run Code Online (Sandbox Code Playgroud)

这是完全可能的还是我只是明白了子类的想法是错误的.很明显,我不是OO专家.

先谢谢你,杰克

c# sql subclassing

1
推荐指数
1
解决办法
348
查看次数

对UIAlertView进行子类化

我试图继承UIAlertView以更好地处理我的应用程序中的错误状态.我遇到的问题是使用otherButtonTitles nil终止参数,当我创建我的子类时,它只是拾取列表中的第一个字符串而不是所有字符串

+ (ErrorAlertView *)displayErrorAlertViewWithTitle:(NSString *)title 
                                           message:(NSString *)message 
                                          delegate:(id<UIAlertViewDelegate>)delegate 
                                     errorDelegate:(id<ErrorAlertViewDelegate>)errorDelegate
                                 cancelButtonTitle:(NSString *)cancelButtonTitle 
                                        displayNow:(BOOL)displayNow
                                               tag:(NSUInteger)tag
                                 otherButtonTitles:(NSString *)otherButtonTitles, ...;

{

  ErrorAlertView *errorAlertView = [[ErrorAlertView alloc]  initWithTitle:title 
                                                                  message:message 
                                                                 delegate:delegate 
                                                        cancelButtonTitle:cancelButtonTitle 
                                                        otherButtonTitles:otherButtonTitles, nil];


  errorAlertView.errorDelegate = errorDelegate;
  errorAlertView.tag = tag;

  if (displayNow) {

    [errorAlertView show];

  }

  return [errorAlertView autorelease];


}
Run Code Online (Sandbox Code Playgroud)

如果我进行以下调用上面的方法:

[ErrorAlertView displayErrorAlertViewWithTitle:[self noInternetConnectionAlertViewTitle] 
                                           message:[self noInternetConnectionAlertViewMessage] 
                                          delegate:self 
                                     errorDelegate:errorDelegate 
                                 cancelButtonTitle:@"OK" 
                                        displayNow:YES 
                                               tag:ErrorAlertTagInternetConnectionError 
                                 @"Try again",@"Setting", nil];
Run Code Online (Sandbox Code Playgroud)

显示UIAlertView时只显示@"再试一次"按钮.

null objective-c subclassing uialertview ios

1
推荐指数
2
解决办法
5188
查看次数

Qt5 C ++:子类化QSpinBox和keyPressEvent将不起作用

我想跟踪何时按下回车键或回车键,然后将焦点集中在其他某个小部件上,但是如果未按下该小部件,则spinbox应该采取常规措施而不是其他措施。我已经将QSpinBox子类化,并创建了受保护的void keyPressEvent(QKeyEvent * event)。里面是这段代码:

void MytSpinBox::keyPressEvent(QKeyEvent *event) {
    if (event->key() == Qt::Key_Return) {
        qDebug() << "return pressed";
        editingFinished();
    } else {
        qDebug() << "Other key";
        event->accept();
    }
}
Run Code Online (Sandbox Code Playgroud)

这段代码应该可以,但是不能。我不知道这是怎么回事,但是当我专注于升级的Spinbox并尝试更改其中的数字时,它将无法正常工作,只会显示调试消息。如果我按Enter / Return键,它将打印调试消息并关注我在editFinished()中设置的其他小部件。

我究竟做错了什么?

c++ qt keypress subclassing qspinbox

1
推荐指数
1
解决办法
1581
查看次数

Python:subclassing frozenset不可迭代?

对于iterables,子类化冷冻集和集合似乎不起作用.尝试运行以下MWE:

class MonFrozenSet(frozenset):
    def __new__(self, data):
        super(MonFrozenSet,self).__init__(data)
        return self

class MonSet(set):
    def __init__(self, data):
        super(MonSet,self).__init__(data)



x=(1,2,3,4)

A=MonSet(x)
B=MonFrozenSet(x)

for y in A: #Works
    print y

for y in B: #Doesn't work
    print y
Run Code Online (Sandbox Code Playgroud)

第二个for回归:

for y in B:
TypeError: 'type' object is not iterable
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?

如果你问自己为什么我想使用freezeset,那就是我试图创建一组元组.元组集将被冻结,元组集将成为一组.

我使用Python-2.7

python types set subclassing python-2.7

1
推荐指数
1
解决办法
355
查看次数

禁止来自呼叫基地的覆盖

我想做这样的事情:

public class MyClass {
  public virtual void Foo() {
    this.DoSomethingThatWouldBeFineInASubclassButAnOverrideWouldNotWantToUse();
  }
}
Run Code Online (Sandbox Code Playgroud)

基本上,我在这里做一些工作,我想要一个默认的方法,但如果有人要覆盖,他们可能不会使用默认.将base.Foo()放入覆盖中而不考虑它是如此容易; 实际上我的IDE会自动完成.我想防止这种情况.可能吗?

c# overriding virtual-functions subclassing

1
推荐指数
1
解决办法
61
查看次数