【问题标题】:How to forbid the assignment to some attributes and update linked attributes of a Python object? [duplicate]如何禁止分配给某些属性并更新 Python 对象的链接属性? [复制]
【发布时间】:2016-01-03 07:27:07
【问题描述】:

例如,

c = myClass()
  1. myClass 的属性 x 是只读的。尝试更改 c.x 会引发错误。

  2. myClass 的属性aba=2*b 连接。当一个改变时,另一个也会自动改变。

c.a = 10 
# or setattr(c,'a',10) or c.__setattr('a',10)
# c.b becomes 5
c.b = 10
# c.a becomes 20

【问题讨论】:

  • 您是否有更多代码可以展示您如何尝试实现您想要做的事情?
  • 查看属性(@property 装饰器)。
  • 你可以使用魔术方法setattr

标签: python


【解决方案1】:

你要找的是@property

class MyClass:
    def __init__(self, x, a):
        self._x = x
        self.a = a

    @property
    def x(self):
        return self._x

    @property
    def b(self):
        return self.a / 2

    @b.setter
    def b(self, b):
        self.a = b * 2

x 没有设置器,所以它是只读的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2014-06-11
    • 2020-12-05
    • 2010-11-15
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多