0
から継承するクラスでは、私は以下のようなクラスを見たことがありますか?それは正しいアプローチですか?は、オブジェクト
から継承するクラスでは、私は以下のようなクラスを見たことがありますか?それは正しいアプローチですか?は、オブジェクト
多重継承はMyClass
はMROで別の場所で終わることができること、それはそのようになるので、はい、それは、正しいアプローチだ:
>>> class MyClass(object):
... def __init__(self):
... super(MyClass, self).__init__()
...
>>> class Foo(object):
... def __init__(self):
... print('Foo __init__!')
... super(Foo, self).__init__()
...
>>> class Bar(MyClass, Foo):
... pass
...
>>> Bar.__mro__
(<class '__main__.Bar'>, <class '__main__.MyClass'>, <class '__main__.Foo'>, <class 'object'>)
ここobject
前Foo
を置くMyClass
とFoo
両方からBar
継承、 。 MyClass.__init__()
が正しいことをやってsuper()
経由__init__
チェーンに通過している、ので、Foo.__init__
が正しく呼び出されます。
>>> Bar()
Foo __init__!
<__main__.Bar object at 0x107155da0>
なぜあなたのことができるのではないでしょうか?一貫して 'super'を使うのが最善です。さもなければ、複数の継承コンテキストでうまくいかなくなります。 – jonrsharpe