正在更新Python类字段



这是一个基本问题,可以说明如何更新类字段。我遇到了以下情况:

class MyClass():
def __init__(self):
self.a=0
self.my_dict={'a':self.a}
c=MyClass()
print('c.a=', c.a)
print('c.my_dict['a']=', c.my_dict['a'])
c.my_dict['a']=1
print('c.a=', c.a)
print('c.my_dict['a']=', c.my_dict['a'])

结果:

c.a= 0
c.my_dict['a']= 0
c.a= 0
c.my_dict['a']= 1

c.a具有相同的值。为什么?c.a不应该引用与c.my_dict相同的内存位置吗?

如果在编写代码后查看类中的变量,希望它能澄清问题:

>>> vars(c)
{'a': 0, 'my_dict': {'a': 1}}

分配self.my_dict = {'a': self.a}时,读取a的当前值,然后生成dict{'a': that_value}。没有引用变量a

如果你想存储这样的引用,你可以做如下操作:

class MyClass():
def __init__(self):
self.a = [0]
self.my_dict = {'a': self.a}
c = MyClass()
>>> vars(c)
{'a': [0], 'my_dict': {'a': [0]}}
c.my_dict['a'][0] = 1
>>> vars(c)
{'a': [1], 'my_dict': {'a': [1]}}

相关内容

  • 没有找到相关文章

最新更新