Python中的多重继承问题!
发布时间:2020-12-20 11:16:31 所属栏目:Python 来源:网络整理
导读:为什么c.print_a()输出’B’? class A(object): def __init__(self): self.some_name = 'A' def print_a(self): print self.some_nameclass B(object): def __init__(self): self.some_name = 'B' def print_b(self): print self.some_nameclass C(A,B): de
为什么c.print_a()输出’B’?
class A(object): def __init__(self): self.some_name = 'A' def print_a(self): print self.some_name class B(object): def __init__(self): self.some_name = 'B' def print_b(self): print self.some_name class C(A,B): def __init__(self): A.__init__(self) B.__init__(self) if __name__ == '__main__': c = C() c.print_a() class A(object): def __init__(self,some_name='A'): self.some_name = some_name def print_a(self): print self.some_name class B(object): def __init__(self,some_name='B'): self.some_name = some_name def print_b(self): print self.some_name class C(A,B): def __init__(self): A.__init__(self,some_name='AAAAA') B.__init__(self,some_name='BBBBB') if __name__ == '__main__': c = C() c.print_a() 解决方法
你这里只有一个对象; some_name属性在所有继承类的方法之间共享.你调用A .__ init__,将其设置为A,然后调用B .__ init__,将其更改为B.
另请注意,您正在调用基本方法;使用超级: class A(object): def __init__(self): self.some_name = 'A' super(A,self).__init__() def print_a(self): print self.some_name class B(object): def __init__(self): self.some_name = 'B' super(B,self).__init__() def print_b(self): print self.some_name class C(A,B): def __init__(self): super(C,self).__init__() if __name__ == '__main__': c = C() c.print_a() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |