在 Python 中定义 setter
On defining a setter in Python
假设我们有以下代码:
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?我将如何定义装饰器?
简单 属性 的过程非常简单,但是 Python 如何理解,在这种情况下,我想为 a[i]
定义一个 setter(像 @a[i].setter
) ?
您的代码中没有任何装饰器,也不需要装饰器来支持项目分配。
只需为您的 class 实施 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
假设我们有以下代码:
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?我将如何定义装饰器?
简单 属性 的过程非常简单,但是 Python 如何理解,在这种情况下,我想为 a[i]
定义一个 setter(像 @a[i].setter
) ?
您的代码中没有任何装饰器,也不需要装饰器来支持项目分配。
只需为您的 class 实施 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