當我從外部類調用method1()時,它最終調用派生類method1()。我如何強制它調用基類method1?內部類最好是初始並從那裏調用父母初始?從基類調用基類方法
class OuterClassA
__init__
method1()
def method1(self):
....
class InnerClassB(OuterClassA)
def method1(self):
....
當我從外部類調用method1()時,它最終調用派生類method1()。我如何強制它調用基類method1?內部類最好是初始並從那裏調用父母初始?從基類調用基類方法
class OuterClassA
__init__
method1()
def method1(self):
....
class InnerClassB(OuterClassA)
def method1(self):
....
調用基類method1()
。
OuterClassA.method1(someClassBObject)
Python的雙下劃線名稱mangling旨在幫助解決此問題。
詳情請參閱:http://docs.python.org/tutorial/classes.html#private-variables和http://docs.python.org/reference/expressions.html#atom-identifiers。
class OuterClassA:
def __init__(self):
self.__method1() # call this class's private copy
def method1(self):
...
__method1 = method1 # make a private (class local) copy
class InnerClassB(OuterClassA)
def method1(self):
...
對不起,這不是問題的首選方法。 –
首選的解決方案是不首先遇到這個問題。提問者已經決定避免是不好的,所以剩下的就是弄清楚哪一種解決方案是最不可怕的。 –
有合理的用例,希望讓子類重寫方法而不中斷父進程直接內部調用的能力。 –