在Python对象中设置数据字段时,我应该使用"self"关键字吗?

i l*_*low 1 python

我应该写

class MyClass:
     def __init__(self):
         self.field = 0
Run Code Online (Sandbox Code Playgroud)

要么

class MyClass:
     def __init__(self):
         field = 0
Run Code Online (Sandbox Code Playgroud)

这些陈述之间有什么区别吗?

小智 5

是的,您必须使用该self变量来设置Python对象/实例的属性.

在第二种情况下,您只是创建一个局部变量__init__,而不是定义属性.

class MyClass:
    def __init__(self):
        field = 0

print MyClass().field # an error! it's not defined!
Run Code Online (Sandbox Code Playgroud)

您可能会被class块中的原始赋值设置类属性的方式误导:

class MyClass:
    a = 2

print MyClass.a # 2
Run Code Online (Sandbox Code Playgroud)

class块中的行为是不寻常的,并且您在方法中没有获得类似的行为.