Python:为什么要调用'__init__'而不是className()?
因为调用 className()
会执行 __init__(args)
里面的代码,下面的代码中为什么还要有人明确调用 __init__
呢?
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
这两种方法调用之间实际执行的代码有什么区别吗?还是说选择 __init__()
而不是 className()
只是随便的选择?
运行的是 Python 3.4
1 个回答
9
className()
不仅仅是调用 __init__
方法。它还会调用 __new__
方法,这个方法的作用是创建一个新的类实例。所以,当你调用 Frame()
时,并不会在同一个 self
对象上进行父类的初始化,而是会创建一个新的对象并对这个新对象进行初始化。
你在想要对已经创建的特定实例运行 仅仅 __init__
方法时,才会调用 __init__
。通常这种情况就像你展示的那样,你希望让父类在子类的初始化之上进行初始化。