使用@property获取/设置列表/数组:如何正确设置列表的索引

时间:2017-09-11 03:45:44

标签: python

美好的一天!

我想使用@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])

0 个答案:

没有答案