您好我正在尝试使用python中的setter和getter进行一个类,并且我想将setter与其他指令一起使用,因此在设置属性值时,setter不仅仅将值赋给属性。也许我对setter和getter是如何工作感到困惑。这是一个例子:
class test:
self.x = None
@property
def var(self):
return self.x
@var.setter
def var(self, value):
print("Assigning Value")
self.x = value
v = test()
v.var = "hello"
所以我在这个例子中想要做的是在分配x值时打印“赋值”,但到目前为止还没有工作。
我的问题是。我做错了什么?,我想错过什么吗?或者这不是主持人和吸气者的工作方式?
由于
答案 0 :(得分:4)
更改
class test:
要:
class test(object):
在Python 2.x中,如果继承自object,则只能使用描述符。 (它是向后兼容的东西)。幸运的是,这已在Python 3.x
中得到解决答案 1 :(得分:0)
此时,没有自我:
class test:
self.x = None
# ^^^^^ BAD
将其更改为在初始值设定项中设置:
class test:
def __init__(self):
self.x = None
或正常使用类属性。
class test:
x = None
如果你不确定哪一个,请先选择第一个;在你对这种差异更有信心之前,你会更少地使用这种模式。