为了账号安全,请及时绑定邮箱和手机立即绑定

python 实例化以后属性更新问题

python 实例化以后属性更新问题

江户川乱折腾 2018-10-24 21:28:08
本人刚刚接触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 回答

?
沧海一幻觉

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]>>>


查看完整回答
反对 回复 2018-10-24
  • 1 回答
  • 0 关注
  • 756 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信