假设我们有以下代码:
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?
答案 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