亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于多重繼承

class A(object):
? ?def __init__(self, a):
? ? ? ?print 'init A...'
? ? ? ?self.a = a

class B(A):
? ?def __init__(self, a):
? ? ? ?super(B, self).__init__(a)
? ? ? ?print 'init B...'

class C(A):
? ?def __init__(self, a):
? ? ? ?super(C, self).__init__(a)
? ? ? ?print 'init C...'

class D(B, C):
? ?def __init__(self, a):
? ? ? ?super(D, self).__init__(a)
? ? ? ?print 'init D...'



>>> d = D('d')
init A...
init C...
init B...
init D...


為什么init A只出現了一次,B, C都同時繼承了A, D 繼承了B, C, ?正常我理解 init A ... ?應該出現了兩次才對,求指點

正在回答

1 回答

原文說了:"A雖被繼承了兩次,但__init__()只調用了一次”

語句super(D,self).__init__(a)相當于調用了所有D的父類的__init__(self,a)方法,A也是D的一個父類,并且實例方法被調用了一次,所以只有一個init A...

0 回復 有任何疑惑可以回復我~
#1

痕六

我理解的好像不對,但是不知道怎么刪除回答,當我沒說,呵呵
2015-09-09 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
python進階
  • 參與學習       255563    人
  • 解答問題       3038    個

學習函數式、模塊和面向對象編程,掌握Python高級程序設計

進入課程

關于多重繼承

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號