我是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)
输出:
object created
3
6
但是,我也可以这样做,
class myClass():
x = 3
print("object created")
A = myClass()
print(A.x)
A.x = 6
print(A.x)
打印出相同的结果。
能否请您解释一下为什么我们需要一个构造函数,或者给我举一个例子说明上述方法不起作用的情况?
答案 0 :(得分:4)
引用:但我也可以
class myClass():
x = 3
print("object created")
A = myClass()
print(A.x)
A.x = 6
print(A.x)
不,你不能。一旦要创建同一类的两个或多个对象,就存在根本的区别。也许这种行为会变得更加清晰
class MyClass:
x = 3
print("Created!")
a = MyClass() # Will output "Created!"
a = MyClass() # Will output nothing since the class already exists!
原则上,您需要__init__来编写需要初始化/创建该对象的每个新对象都需要执行的代码,而不仅仅是在读取类时执行一次。
答案 1 :(得分:3)
__init__
用于初始化一个类的多个实例的状态,其中每个实例的状态彼此之间去耦,而您的第二个示例没有__init__
初始化在类的所有实例之间共享的属性。
答案 2 :(得分:0)
init ()是默认方法,每次创建对象时都会调用它,因此 init 内部的变量称为实例属性。每次创建对象时都会自动调用 init (),使用 init ()方法将您在创建对象时传递给对象的数据分配给实例变量在这里,我们只是将方法和变量绑定在一起,每个对象将具有这些实例变量的单独副本,更改一个对象中的数据不会影响另一个对象中的数据