2016-08-31 5 views
0

私は2つの他のクラスから継承するクラスを持っていますが、そのうちの1つはinit引数を受け入れます。親クラスを適切に初期化するにはどうすればよいですか?親init関数が異なる数の引数を受け入れるときにPythonで多重継承を処理する方法

これまでのところ私が持っている:

class A(object): 
    def __init__(self, arg1): 
     self.arg1 = arg1 

class B(object): 
    def __init__(self): 
     pass 

class C(A, B): 
    def __init__(arg1): 
      super(C, self).__init__(arg1) 

しかし、これはBとしてTypeErrorをスローするには、引数を受け取りません。

BCの適切な親ですが、Aは、プロジェクトの多くのクラスが機能を継承しているmixinです。

+0

複数の継承が実用的であるためには、少なくとも1つの親が実際にそれ用に設計されている必要があります。それはAかBのどちらかがそれのために設計されているようには見えません。 – user2357112

+0

あなたはPythonのMROについて読むべきです。http://stackoverflow.com/questions/1848474/method-resolution-order-mro-in-new-style-python-classes – giaosudau

+0

@giaosudau私は、実際にはそうでした。概念的には私はそれを得るが、構文的には私が達成しようとしているものを実装する方法を理解していない。 – Jonline

答えて

1

親クラスの__init__を手動で呼び出すことができます。

class C(A, B): 
    def __init__(arg1): 
      A.__init__(self,arg1) 
      B.__init__(self) 
関連する問題