既然调用className()
会执行__init__(args)
中的代码,为什么在下面的代码中,有人显式调用了__init__
?
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
在两个方法调用之间执行的实际代码是否有任何差异,或者选择 __init__()
而不是 className()
只是任意的?
运行 Python 3.4
最佳答案
className()
不仅仅调用 __init__
。它还调用 __new__
,创建该类的一个新实例。所以调用 Frame()
不会对同一个 self
对象进行父类(super class)初始化;它将创建一个新对象并对其进行初始化。
当您想在已经创建的特定实例上运行只是 __init__
时,您可以调用__init__
。通常,这是在您展示的情况下,您希望让父类(super class)在子类的初始化之上进行初始化。
关于Python:为什么调用 '__init__' 而不是 className()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24438025/