class a:
def set(self, value):
print value+1
def set2(self, value):
self.set(value)
class b(a):
def set(self, value):
print value
if __name__ == '__main__':
i = b()
i.set2(10)
執行時,我得到了導致爲10
,這意味着,b.set()
是所謂的,但爲什麼不a.set()
,因爲它被稱爲與露骨self
?Python的方法重寫規則
P.S. 因此,即使類'a'沒有方法set(),這個代碼仍然工作?但它是一個好的編碼規則?
'self'實際上是一個b對象本身。 – 2013-03-06 09:22:36
@avasal,但我沒有得到屬性錯誤 – j5shi 2013-03-06 09:24:46
你看你是如何傳遞一個'b'對象?你會得到:''b''調用'set2',但它沒有調用''''set2',但你注意到'set2'怎麼調用'set'?使用'self.set(value)'。而且由於'self'是'b'類型,所以自然可以調用'b'''''。 – dmg 2013-03-06 09:25:21