之一的方法,我有以下代碼:多重繼承和使用的基類
class A(object):
def __init__(self):
self.name = "A"
super(A, self).__init__()
def Update(self):
print "Update A"
self.PickTarget()
def PickTarget(self):
print "PickTarget A"
class B(object):
def __init__(self):
self.name = "B"
super(B, self).__init__()
def Update(self):
print "Update B"
self.PickTarget()
def PickTarget(self):
print "PickTarget B"
class C(A, B):
def __init__(self):
super(C, self).__init__()
def Update(self, useA):
if useA:
A.Update(self)
else:
B.Update(self)
c = C()
c.Update(useA = True)
# prints:
# Update A
# PickTarget A
c.Update(useA = False)
# prints:
# Update B
# PickTarget A
爲什麼叫C.Update
與useA=False
還叫成A.PickTarget
?我如何使這個工作如何讓它工作(即B.Update總是調用B.PickTarget)?我確信之前已經提出過這個問題,但是我的搜索沒有任何結果 - 可能是因爲我不知道要搜索什麼。
雖然我仍然認爲這可能需要重新設計,但我會指出,名稱修改爲此問題提供了相當靈活的解決方案。見[我的編輯](http://stackoverflow.com/questions/6849519/multiple-inheritance-and-using-a-method-of-one-of-the-base-classes/6849613#6849613)。 – senderle