美好的一天!
我想使用@property
在我的代码中获取/设置列表/数组。我想访问/修改整个列表,同时,它的元素。我注意到,当我设置整个列表时,它使用@x.setter
- 装饰方法,而当我设置列表索引时,它使用@property
- 装饰方法(或getter;它获取首先是数组,然后设置索引)。这是一个问题,因为我希望将列表转换为np.array。
那么,如何正确设置具有属性的列表索引?
以下是我的代码示例。
import numpy as np
class C(object):
def __init__(self):
self._x = [1,2,3]
@property
def x(self):
"""I'm the 'x' property."""
print("getter of x called")
return np.array(self._x)
@x.setter
def x(self, value):
print("setter of x called")
self._x = value
c = C()
c.x
>>> getter of x called
>>> array([1, 2, 3])
c.x[1]
>>> getter of x called
>>> 2
c.x = [1,2,3,4]
>>> setter of x called
c.x
>>> getter of x called
>>> array([1, 2, 3, 4])
c.x[3] = 6
>>> getter of x called
>>> array([1, 2, 3, 4])