Python:为什么调用 '__init__' 而不是 className()?

标签 python constructor initialization

既然调用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/

相关文章:

python - Pafy Youtube 网址错误

python - python中稀疏矩阵的相关系数?

c - 评估包含未初始化指针的条件 - IN,但它会崩溃吗?

java - 使用引用初始化对象而不访问非默认构造函数

python - Pygame Beat-Em-Up 游戏//敌人攻击计时器永远不会达到零

python - 从 .PST 文件中提取文本

scala - 从特征引用构造函数参数

arrays - [首先,...休息] : A spread argument must either have a tuple type or be passed to a rest parameter. ts(2556)

c++ - 用户定义的构造函数和隐式默认构造函数

c++ - 聚合初始化的 C++17 扩展是否使大括号初始化变得危险?