本人刚刚接触Python, 目前使用python 3.6, 遇到了一点关于类属性的问题, 代码如下:class A():
def __init__(self):
self.x = 0
self.y = 0
self.z = [self.x, self.y] def add_one(self):
self.x += 1
# self.z = [self.x, self.y]a = A()
a.add_one()
print(a.x) # 1print(a.z) # [0, 0]问题如下:假设在add_one方法里面没有self.z = [self.x, self.y]这段代码, 可以发现虽然x是更新了, 但是z并没有随着x的更新而更新, 除非手动加上这段代码才可以实现更新, 请问这是为什么?另外请教一下有没有其他可以更加简便的方法进行对属性的更新? 因为目前这种代码更新起来很麻烦, 增加一个更新方法就需要将所有被更新的属性手动更新一次愿有前辈能指点一下, 若有表述不当, 请见谅!
1 回答
![?](http://img1.sycdn.imooc.com/5458477f0001cabd02200220-100-100.jpg)
沧海一幻觉
TA贡献1824条经验 获得超5个赞
用@property
将函数包装为属性
python3
>>> class A(): def __init__(self): self.x = 0 self.y = 0 @property # 将函数包装为属性 def z(self): return [self.x, self.y] def add_one(self): self.x += 1 >>> a=A()>>> a.add_one()>>> a.x1>>> a.z [1, 0]>>>
添加回答
举报
0/150
提交
取消