【发布时间】:2020-10-23 11:07:51
【问题描述】:
假设我有这个类和它的一个实例
class MyClass:
a = False
b = [0,1,2]
MCi = MyClass()
显然MCi.a 提供False 和MCi.b 提供[0,1,2]。
如果我设置MCi.a = True,我想要的是MCi.b 的值更改为[0,1,2,3,4,5]。当我退回MCi.a = False时,我希望它回到[0,1,2]。
换句话说,MCi.a 应该指示MCi.b,而不必从外部设置后一个属性值。
我该怎么做?
这个问题与我之前问过的this one 非常接近,但是我没有足够仔细地表达我的问题,所以那里提供的解决方案实际上并不是我需要的。不过,使用__setattr__() 的想法可能是一个好的开始。但到目前为止我失败了。
【问题讨论】:
-
你试过@property装饰器
-
@Britzel,我点击了您之前问题的链接。我仍然对一件事感到有些困惑——您希望
a和b成为instance 属性还是class 属性?希望您知道其中的区别。 -
嗨@fountainhead!当我问这个问题时,我还没有意识到差异。现在我想我是:一个类属性改变了类中变量的值,即在蓝图中创建实例。所以每个新实例都会有新值,而每个旧实例都会保留旧值。实例属性的更改使蓝图保持不变,但它仅更改特定实例的值的值。对吗?
-
@fountainhead 如果是这样,那么我认为我需要的是一个实例属性。我还不是 100% 确定,因为我还没有在我的实际代码中测试它。我在这里发布的是,我认为这是一个展示我需要的最小示例。但周一回到办公室还有待观察。 ; )
标签: python python-3.x object attributes instance