为什么我们需要 __init__ 来初始化一个 python 类

Dil*_*nte 6 python constructor init

我对 OOP 还很陌生,我需要一些帮助来理解 python 类中对构造函数的需求。

我知道init用于初始化类变量,如下所示:

class myClass():
    def __init__ (self):
        self.x = 3
        print("object created")

A = myClass()
print(A.x)
A.x = 6
print(A.x)
Run Code Online (Sandbox Code Playgroud)

输出:

object created
3
6
Run Code Online (Sandbox Code Playgroud)

但是,我也可以这样做,

class myClass():
    x = 3
    print("object created")

A = myClass()
print(A.x)
A.x = 6
print(A.x)
Run Code Online (Sandbox Code Playgroud)

打印出相同的结果。

你能解释一下为什么我们需要一个构造函数或者给我一个上面方法不起作用的例子吗?

qua*_*ant 7

引文:但我也可以

class myClass():
    x = 3
    print("object created")

A = myClass()
print(A.x)
A.x = 6
print(A.x)
Run Code Online (Sandbox Code Playgroud)

你不能。一旦您想创建两个或多个相同类的对象,就存在根本区别。也许这种行为像这样变得更加清晰

class MyClass:
    x = 3
    print("Created!")

a = MyClass() # Will output "Created!"
a = MyClass() # Will output nothing since the class already exists!
Run Code Online (Sandbox Code Playgroud)

原则上,您需要 __init__ 来编写代码,每当此对象被初始化/创建时,该代码都需要为每个新对象执行 - 而不仅仅是在读入类时执行一次。


sol*_*333 5

__init__用于初始化类的多个实例的状态,其中每个实例的状态彼此解耦,而您的第二个示例则不初始化在类的所有实例之间共享的__init__属性。