我应该写
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块中的行为是不寻常的,并且您在方法中没有获得类似的行为.