Tag: 子类

什么是子类

什么是在Java中的“子类”? 我知道类和方法,但我不知道子类。

子类字典:UserDict,字典或ABC?

UserDict , dict和ABC之间有什么区别,推荐哪一个? 该文件似乎不赞成UserDict ? 也似乎UserDict的update()将使用我的setitem方法而dict不呢? 哪些方法是真正必要的重setitem定我想要自定义setitem和getitem函数? 有了ABC我必须实现绝对所有的方法,因为它没有提供默认的实现? 我想做一个dict ,做两件事情: intern()所有的键和值 将一些值存储在SQLite数据库中 那么哪个UserDict , dict和ABC最好让我这样做呢?

inheritancePython字典以覆盖__setitem__

我正在build立一个子类dict ,并覆盖__setitem__ 。 我想确定我的方法将在所有可能设置字典项目的情况下被调用。 我发现了三种情况,Python(在本例中为2.6.4)在设置值时不会调用覆盖的__setitem__方法,而是直接调用PyDict_SetItem 在构造函数中 在setdefault方法中 在update方法中 作为一个非常简单的testing: class MyDict(dict): def __setitem__(self, key, value): print "Here" super(MyDict, self).__setitem__(key, str(value).upper()) >>> a = MyDict(abc=123) >>> a['def'] = 234 Here >>> a.update({'ghi': 345}) >>> a.setdefault('jkl', 456) 456 >>> print a {'jkl': 456, 'abc': 123, 'ghi': 345, 'def': '234'} 您可以看到,只有在明确设置项目时才会调用重写的方法。 为了让Python总是调用我的__setitem__方法,我不得不重新实现这三个方法,像这样: class MyUpdateDict(dict): def __init__(self, *args, **kwargs): […]

Swift + CoreData:不能在生成的NSManagedObject子类上自动设置可选属性

我有一个名为Record的coredata实体,并有一个属性dateUpdated。 我注意到生成的NSManagedObject子类没有可选标记(?) CoreData编辑器: 生成的子类: 预期: 更新:在我的部分是乏味的 ,因为每次我想重新生成子类,这意味着我也需要手动更新所有可选值。 在子类中有一个非可选的(不带'?')会导致在赋值之前检查evalue,如下例所示: // sample value: // serverDateFormatter = "yyyy/MM/dd" // dateString = "" // Branch is a subclass of Record (see above images) var date = self.coreData.serverDateFormatter.dateFromString(dateString) if date != nil { branch.dateUpdated = date } 但是,如果xcode可以用(?)自动设置子类中的可选值,我只需要这样做: branch.dateUpdated = self.coreData.serverUTCDateFormatter.dateFromString(dateString) 在我的情况下,我有一堆属性,我需要手动标记为可选。

覆盖@property设置器和无限循环

有A类与: @interface ClassA : NSObject { } @property (nonatomic, assign) id prop1; @end @implementation @synthesize prop1; @end 那么我有子类 @interface ClassB : ClassA { } @end @implementation – (id)init { self = [super init]; if (self) { } return self; } //This is infinite loop – (void) setProp1:(id)aProp { self.prop1 = aProp; } @end 这是无限循环,因为ClassB中的setProp1从ClassB中调用[ClassB setProp1:val]。 […]

iOS:UIView的子类init或initWithFrame:?

我做了一个具有固定框架的UIView的子类。 所以,我可以重写init而不是initWithFrame: 例如: – (id)init { if ((self = [super initWithFrame:[[UIScreen mainScreen] bounds]])) { self.backgroundColor = [UIColor clearColor]; } return self; } -initWithFrame:的Xcode文档说:“如果以编程方式创build视图对象,则此方法是UIView类的指定初始值设定项。子类可以重写此方法以执行任何自定义初始化,但必须在实现开始时调用super 。 “ “指定初始值设定项”是什么意思?

为什么不能减lessJava子类中方法的可见性?

为什么编译器在重写子类时降低方法的可见性时会给出错误消息?

父母和基地在Perl 5有什么区别?

似乎有一个名为parent的新的编译指南,做base大致相同的事情。 parent做了什么来保证一个新的(非核心)模块? 我错过了什么?

Python:在子类中inheritance__slots__是如何工作的?

在插槽上的Python数据模型参考部分中,有一个使用__slots__的注释列表。 我对第一和第六项感到十分困惑,因为它们似乎是相互矛盾的。 第一项: 从没有__slots__的类inheritance时,该类的__dict__属性总是可访问的,所以子类中的__slots__定义是没有意义的。 第六项: __slots__声明的操作仅限于定义的类。 因此,子类将有一个__dict__除非它们也定义了__slots__ (它只能包含任何附加槽的名称)。 在我看来,这些项目可能更好措辞或通过代码显示,但我一直试图围绕这一点,我仍然感到困惑。 我明白__slots__是如何被使用的 ,我正试图更好地把握他们的工作方式。 问题: 有人可以用简单的语言向我解释什么条件是子类inheritance的插槽? (简单的代码示例将是有用的,但不是必要的。)

为什么没有使用申报工作来解决钻石问题呢?

请考虑下面的代码: struct A { void f() { } }; struct B1 : A { }; struct B2 : A { }; struct C : B1, B2 { void f() // works { B1::f(); } //using B1::f; // does not work //using B1::A::f; // does not work as well }; int main() { C c; cf(); […]