子类化多个类时__dict__中的实例属性

时间:2018-06-17 00:28:58

标签: python inheritance

我是多个类的子类。当我打印实例属性时,self.__dict__仅包含First类的属性。我怎样才能包含第二个属性?

class Third(First,Second):

    def __init__(self):

        super().__init__()
        print (self.__dict__)

2 个答案:

答案 0 :(得分:3)

呼叫First只会从method resolution order中的下一个超类呼叫super().__init__。然后,下一个类方法的作用也是调用__init__

错误

super().__init__

class First:
    def __init__(self):
        self.foo = 'foo'


class Second:
    def __init__(self):
        self.bar = 'bar'


class Third(First,Second):
    def __init__(self):
        super().__init__()
        print(self.__dict__)

Third() # prints: {'foo': 'foo'}

答案 1 :(得分:0)

可能是因为您在课程super().__init__()的{​​{1}}中省略了超级电话__init__