我在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 方法,并使用它的返回作为新创建的对象 - 除非你明确想要返回不同的东西。

来自: stackoverflow.com