我的Python程序中有一個相當複雜的類層次結構。該程序有許多工具,它們是模擬器或編譯器。這兩種方法有一些共同的方法,所以有一個Shared
類作爲所有類的基類。的條向下的例子如下所示:我可以在Python中爲繼承的方法創建別名嗎?
class Shared:
__TOOL__ = None
def _Prepare(self):
print("Preparing {0}".format(self.__TOOL__))
class Compiler(Shared):
def _Prepare(self):
print("do stuff 1")
super()._Prepare()
print("do stuff 2")
def _PrepareCompiler(self):
print("do stuff 3")
self._Prepare()
print("do stuff 4")
class Simulator(Shared):
def _PrepareSimulator(self): # <=== how to create an alias here?
self._Prepare()
class Tool1(Simulator):
__TOOL__ = "Tool1"
def __init__(self):
self._PrepareSimulator()
def _PrepareSimulator(self):
print("do stuff a")
super()._PrepareSimulator()
print("do stuff b")
能否定義方法Simulator._PrepareSimulator
作爲別名到Simulator/Shared._Prepare
?
我知道我可以創建本地別名,如:__str__ = __repr__
,但在我的情況下,_Prepare
在上下文中是未知的。我沒有self
也沒有cls
引用此方法。
我可以寫一個裝飾器來返回_Prepare
而不是_PrepareSimulator
?但是,如何在裝飾器中找到_Prepare
?
我是否需要調整方法綁定呢?
你可以將'_PrepareSimulation'定義爲'Shared._Prepare'的別名,即:'_PrepareSimulation = Shared._Prepare'。但我完全不知道爲什麼你想要。你究竟在努力實現什麼? –
你有'_PrepareSimulation'和'_PrepareSimulator' - 是不同的還是一個錯字? – tdelaney
錯字:)更高級別的類可以覆蓋方法,並根據需要插入它們的邏輯。大多數類都使用基類的功能 – Paebbels