jar*_*ied 0 python class instance
我有一个带有属性的类和一个带有空值的列表。当生成a和b的两个实例并向属性添加元素时,发现属性没有实例化。使用id查看a.property和b.property。内存地址是一样的。为什么?
如何才能property attribute成为instance attribute?
我的代码示例如下:
class MyClass:
property = []
def __init__(self):
pass
def append(self, value):
self.property.append(value)
a = MyClass()
b = MyClass()
a.append(1)
print(a.property)
b.append(1)
print(a.property)
print(b.property)
print(id(a.property))
print(id(b.property))
Run Code Online (Sandbox Code Playgroud)
结果是:
[1]
[1, 1]
[1, 1]
1866383694784
1866383694784
Run Code Online (Sandbox Code Playgroud)
我尊重的结果:
[1]
[1]
[1]
Run Code Online (Sandbox Code Playgroud)
在您的例子中property = []是一个类变量,它与您的类的所有实例共享。我认为,您不想property = []与其他班级分享 的价值。这意味着您需要一个实例变量,可以如下定义。
class MyClass:
def __init__(self):
self.property = []
def append(self, value):
self.property.append(value)
Run Code Online (Sandbox Code Playgroud)
这应该会给你你预期的输出,纯粹!