我有一个重写基类方法的类(这是密封对象,因为它来自外部包)。在我意识到自己在某些情况下需要保持原始行为之前,它一直运行良好。
所以我现在需要在班级的新旧行为之间来回切换。以下是有效的代码段,但我认为它很丑。
def external_method(val):
return 'Return from external method'
class A:
def __init__(self):
print('Initializing: class A')
def sub_method(self, val):
print('Printing from class A:', val)
return "Return from base method"
class B(A):
def __init__(self):
print('Initializing: class B')
super().__init__()
def sub_method(self, val):
if val % 2 == 0:
return external_method(val)
else:
return super().sub_method(val)
if __name__ == '__main__':
b = B()
print(b.sub_method(2))
还有其他记下来的方法吗?