【发布时间】:2014-07-08 16:11:43
【问题描述】:
当使用属性来获取/设置属性列表时,适用于单个对象的相同样板代码似乎不适用于容器。 (或者,确实如此,但我做错了。)
例子:
>>> class A(object):
... def __init__(self, x, y):
... self.x = x
... self.y = y
... @property
... def pos(self):
... return [self.x, self.y]
... @pos.setter
... def pos(self, xy):
... self.x, self.y = xy
...
>>> Stick = A(10, 20)
>>> Stick.x
10
>>> Stick.y
20
>>> Stick.pos
[10, 20]
>>> Stick.pos = [5, 10]
>>> Stick.x
5
>>> Stick.y
10
>>> Stick.pos
[5, 10]
到目前为止一切顺利;但是,当尝试分配给Stick.pos[0] 时,我遇到了麻烦。
>>> Stick.pos[0] = 70
>>> Stick.x
5
>>> Stick.pos
[5, 10]
现在,当然,可能根本不会这样做,而只是直接分配给obj.x,但它确实让我想知道如果假设只有obj.pos 属性允许分配。 当pos 是一个属性时,有没有办法成功分配给obj.pos[i]?
【问题讨论】:
标签: python python-2.7 properties