我正在尝试使用python了解getter和setter。我理解基本的想法但我无法使用属性装饰器
来使用它class f(object):
def __init__(self):
self.de = ['d', 'd']
@property
def d(self):
return self.de
@d.setter
def d(self, value):
self.d = value
f = f()
f.d(1)
当我运行它时,我得到一个类型错误; 'list object不可调用'
答案 0 :(得分:0)
使用property
的重点在于它在语法上与常规属性访问完全相同。所以:
f = f()
f.d = 1
(但是,我想你想在你的二传手中设置self.de = value
。)
答案 1 :(得分:0)
以下是如何将属性与setter一起使用的示例。一些人想要注意:
object.property
获取属性。它们不是方法,所以你不要打电话。someLength.inFeet = 2.5
self.inFeet = ...
setter中使用inFeet
。这将创建一个无限(递归)的setter调用循环。例如:
class Length(object):
def __init__(self, inInches):
self.inInches = inInches
@property
def inFeet(self):
return self.inInches / 12.
@inFeet.setter
def inFeet(self, valueInFeet):
self.inInches = valueInFeet * 12.
someLength = Length(12.)
print someLength.inInches
# 12.0
print someLength.inFeet
# 1.0
someLength.inFeet = 2.5
print someLength.inInches
# 30.0