看看這個。請注意,該類B會覆蓋A的a()方法。In [1]: class A(object): ...: def __init__(self): ...: self.a() ...: def a(self): ...: print "A.a()" ...: ...: In [2]: class B(A): ...: def __init__(self): ...: super(B, self).__init__() ...: def a(self): ...: print "B.a()" ...: ...: In [3]: b = B()B.a()沒有驚喜。現(xiàn)在,看看這個。請注意,現(xiàn)在被覆蓋的方法是__a()。In [7]: class A(object): ...: def __init__(self): ...: self.__a() ...: def __a(self): ...: print "A.__a()" ...: ...: In [8]: class B(A): ...: def __init__(self): ...: super(B, self).__init__() ...: def __a(self): ...: print "B.__a()" ...: ...: In [9]: b = B()A.__a()這種行為使我感到驚訝。誰能解釋為什么A.__a()被稱為而不是B.__a()?什么__special__約__a?更新:閱讀了肖恩的答案后,我想看看是否可以覆蓋名稱混亂的方法并得到以下結(jié)果:In [11]: class B(A): ....: def __init__(self): ....: super(B, self).__init__() ....: def _A__a(self): ....: print "B._A__a()" ....: ....: In [12]: b = B()B._A__a()
添加回答
舉報
0/150
提交
取消