方法的条件替代

时间:2019-07-03 05:57:31

标签: python

我有一个重写基类方法的类(这是密封对象,因为它来自外部包)。在我意识到自己在某些情况下需要保持原始行为之前,它一直运行良好。

所以我现在需要在班级的新旧行为之间来回切换。以下是有效的代码段,但我认为它很丑。

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))

还有其他记下来的方法吗?

0 个答案:

没有答案