0

考虑(蟒蛇):

假设全局函数:default_start(), main_behaviour(), default_end(), custom_start(), 和custom_end()仅作为代码填充用于说明目的。

class Parent:
    def on_start_main(self):
        default_start()

    def main_behaviour(self):
        main_behaviour()

    def on_end_main(self):
        default_end()

    def main(self):
        self.on_start_main()
        self.main_behaviour()
        self.on_end_main()

class Child(Parent):
    def on_start_main(self):
        custom_start()

    def on_end_main(self):
        custom_end()

对比

class Parent:
    def main_behaviour(self):
        main_behaviour()

    def main(self):
        default_start()
        self.main_behaviour()
        default_end()

class Child(Parent):
    def main(self):
        custom_start()
        Parent.main_behaviour(self)
        custom_end()

我不知道其中哪一个更可取,但我怀疑第二个。这是品味问题,还是有具体原因为什么一个比另一个更好?

谢谢

4

1 回答 1

2

出于一个简单的原因,我更喜欢第一个解决方案:

如果你想在Child课堂上只覆盖on_start_mainon_end_main保持不变怎么办。

如果您选择第一个解决方案,那么您只需覆盖该on_start_main方法并完成。您不必知道甚至Parent不需要关心该类在它的on_end_main.

如果您选择第二种解决方案,您必须确切地知道Parent该类在main方法中究竟做了什么,因此您不仅要深入研究Parent类的源代码,还要复制已经编写的代码。

于 2013-08-08T00:01:32.140 回答