2008年5月6日火曜日

python 多重継承

特に,今必要性に迫られているわけではないけど,
python の多重継承でのコンストラクタの呼び出しどうやってやればいいのだろうか...
例えば,単なる継承の場合には,

class Parent (object):
    """ """
    __pVar = 0
    def __init__ (self, num):
        """ """
        self.__pVar = num
    def __del__ (self):
        """ """
        pass
    def GetParentVar (self):
        """ """
        return self.__pVar

class Child (Parent):
    """ """
    __cVar = 0
    def __init__ (self, num1, num2):
        """ """
        self.__cVar = num1
        super(Child, self).__init__(num2)
    def __del__ (self):
        """ """
        pass
    def dumper (self):
        """ """
        print "%d %d" % (self.__cVar, self.GetParentVar())
    
def main():
    child = Child(100, 200)
    child.dumper()

#-----------------------------------------
if __name__ == "__main__":
    main()

とすれば,なんとなく動くんだけど,
Child が Parent と Parent と似たような GrandParent も継承した場合に,
両方のコンストラクタを呼び出す方法がなんともわかりません...
継承しているので,Child のコンストラクタが呼び出された時点で,
Parent と GrandParent が生成されているから,
単にメソッド経由でメンバの値を設定・取得すれば動くのですが,
なんとなくコンストラクタ経由でメンバの初期化をしたい気分です.
そもそもオブジェクト指向にあまり強くないので発想自体が
間違っているのかもしれないけど,少し気になっている今日この頃.

0 件のコメント: