[英]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.