在Python中定义一个setter

时间:2015-09-23 16:07:03

标签: python decorator getter-setter python-decorators magic-methods

假设我们有以下代码:

class A:
       def __init__(self):
           self.x = [p for p in range(10)]

       def __getitem__(self, key):
           return self.x[key]

a = A()
print a[2] #will return a.x[2] = 2

现在我如何定义a[i]的setter?我如何定义装饰器?

简单属性的过程非常简单,但在这种情况下,Pyhton将如何理解我想为a[i](类似@a[i].setter)定义一个setter?

1 个答案:

答案 0 :(得分:4)

您的代码中没有装饰器,也不需要支持项目分配。

为您的班级实施object.__setitem__() method

class A:
    def __init__(self):
        self.x = [p for p in range(10)]

    def __getitem__(self, key):
        return self.x[key]

    def __setitem__(self, key, value):
        self.x[key] = value