1. ホーム
  2. python

[解決済み] __init__() は親クラスの __init__() を呼び出すべきですか?

2022-06-04 17:02:37

質問

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

についてもtrue/falseでしょうか? __new__()__del__() ?

編集します。 よく似た質問があります。 継承とオーバーライド __init__ Pythonで

どのように解決するのですか?

Pythonでは、スーパークラスの呼び出しは __init__ は任意です。もし呼び出したら、その後に super を使うか、あるいは明示的にスーパークラスの名前を付けるかどうかも任意です。

object.__init__(self)

オブジェクトの場合、superメソッドは空なので、superメソッドを呼び出すことは厳密には必要ではありません。同じように __del__ .

一方 __new__ では、確かに super メソッドを呼び出し、その戻り値を新しく生成されたオブジェクトとして使うべきです - 明示的に別のものを返したいのでなければ。