2017-07-12 3 views
0

から継承するクラスでは、私は以下のようなクラスを見たことがありますか?それは正しいアプローチですか?は、オブジェクト

+0

なぜあなたのことができるのではないでしょうか?一貫して 'super'を使うのが最善です。さもなければ、複数の継承コンテキストでうまくいかなくなります。 – jonrsharpe

答えて

2

多重継承は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'>) 

ここobjectFooを置くMyClassFoo両方からBar継承、 。 MyClass.__init__()が正しいことをやってsuper()経由__init__チェーンに通過している、ので、Foo.__init__が正しく呼び出されます。

>>> Bar() 
Foo __init__! 
<__main__.Bar object at 0x107155da0> 
関連する問題