繁体   English   中英

Python - 为什么在__init __()期间调用方法

[英]Python - Why call methods during __init__()

我一直在寻找一些PyQt4的教程和It Is Good,但是我不太明白为什么创建对象时的语法是这样的:

class Example(QtGui.QMainWindow):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):               

        #code to set up instance variables and show() the window

通过这种方式完成的工作获得了什么,而不仅仅是完全取消了self.initUI()调用,而只是在调用super之后放置任何在__init__()中设置属性的代码?

有时为了可读性,代码被分成函数。

如果您的对象初始化需要三个步骤,那么逻辑上将它分成三个函数是有意义的。 这些函数的名称可以描述它们处理的初始化部分。

您可能会看到从真正的__init__调用的“init”函数的另一个原因是该函数是否将对象恢复为新状态; 在这种情况下,您可能希望从外部__init__中调用“clean”函数,例如,对象池。

您还在自己的问题中暗示了重用的第三个原因:如果子类需要更改初始化部分发生的顺序(或者完全省略/替换某些部分!),单元__init__是不可能的。但如果将它分成不同的部分则很容易。

第四个也是最后一个原因是分析。 如果您跟踪功能条目/存在和时间,则单独的功能可以在时序度量中提供更精细的粒度。

无论如何,你的编码方式取决于你 - 但你在这里质疑的方法确实有优点。

也许这样可以再次调用initUI。

我所知道的只有一个原因,就像大多数语言一样 - 可用性。 面向对象编程的核心是重用事物的能力 - 无论是类,方法还是变量。 通过分离我们不同的方法/功能,我们可以稍后调用它们。 你以后是否打电话给他们......这是值得商榷的。 我认为这取决于良好的编程习惯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM