我的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