我在Objective-C中使用了此结构:
- (void)init {
if (self = [super init]) {
// init class
}
return self;
}
也应该Python调用父类的实现__init__
?
class NewClass(SomeOtherClass):
def __init__(self):
SomeOtherClass.__init__(self)
# init class
这也是对的还是错误的__new__()
和__del__()
?
Edit: 有一个非常相似的问题:继承和覆盖__init__
在Python
答案
在Python中,称为超级班级__init__
是可选的。如果您称其为super
标识符,或者是否显式命名超类:
object.__init__(self)
在对象的情况下,由于超级方法是空的,因此调用超级方法不是严格必要的。相同__del__
。
另一方面,对于__new__
,你确实应该调用 super 方法,并使用它的返回作为新创建的对象 - 除非你明确想要返回不同的东西。