class s:
i = []
def inc():
t = s()
t.i.append(len(t.i))
return len(t.i)
print(inc())
print(inc())
Run Code Online (Sandbox Code Playgroud)
我的输出:
1
2
Run Code Online (Sandbox Code Playgroud)
但我期待:
1
1
Run Code Online (Sandbox Code Playgroud)
因为每次创建新对象,我的错误在哪里?
gon*_*opp 10
您将附加到类的变量,而不是实例的变量
class s:
i = []
Run Code Online (Sandbox Code Playgroud)
此代码在类中创建一个变量.这类似于Java或C++中静态变量的概念.
在java中:
class S {
static List i = new ...
}
Run Code Online (Sandbox Code Playgroud)
你可能想这样做:
class s:
def __init__(self):
self.i = []
Run Code Online (Sandbox Code Playgroud)
这将在一个可变的实例,其被命名为自(类似于此在Java或C++).__init__是类的构造函数.