在Python中,我们可以使用@property装饰器来管理对属性的访问。例如,如果我们定义类:
class C:
def __init__(self,value):
self._x = value
@property
def x(self):
"""I'm the 'x' property."""
return self._x
我们可以获取x的值,但不能更改它:
c = C(1)
#c.x = 4 # <= this would raise an AttributeError: can't set attribute
但是,如果属性是可变类型(例如列表),则可以为属性的位置设置不同的值:
c = C([0,0])
c.x[0] = 1 # <= this works
有办法预防吗?如果x是一个列表,我只想使用类C的方法来更改x的位置值。
慕尼黑5688855
相关分类