5

だからここで私は問題があります。2つの親クラスがあるとしましょう。どちらもマスタークラスから継承します。次に、それらは両方とも子クラスの親クラスです。私が「子供を産んでいる」母親のクラスを把握する方法はありますか(私が父親だとしましょう)。私は子供がどの母親のクラスであるかを理解する必要はありません。私は父がそれがどの母親のクラスであるかを理解できるようにしたいのです。

これはばかげた例だと思いますが、他の場所でやらなければならないことを単純化したものです。

class Master(object):
    def __init__(self):
        self.troll()
        self.trell()

class Mother1(Master):
    def troll(self):
        print 'troll1'

class Mother2(Master):
    def troll(self):
        print 'troll2'

class Father(Master):
    def trell(self):
        print 'trell'
        print self.figure_out_spouse_class()

class Child1(Mother1, Father):
    pass

class Child2(Mother2, Father):
    pass

c = Child1() #should print 'Mother1'
c = Child2() #should print 'Mother2'

〜〜〜〜
_
_
_

4

2 に答える 2

6

あなたが使用することができます__bases__

def figure_out_spouse_class(self):
    return [b.__name__ for b in self.__class__.__bases__ if b != Father]

(これは、複数ある場合、すべての「配偶者」クラスの名前を返します)。

于 2012-08-01T01:35:50.423 に答える
1

__bases__子オブジェクトのクラスを見ることができます。

class Father(Master):
    def trell(self):
        print self.__class__.__bases__[0]
        super(self.__class__, self).troll()
于 2012-08-01T01:40:28.703 に答える