【发布时间】:2016-09-04 12:59:58
【问题描述】:
出于某种原因,我有一个带有 python getter 的类,其作用类似于 setter...我不知道为什么会发生这种情况。如果有人能帮助我,那将不胜感激。 :) 这是我的代码
class Testclass():
def __init__(self):
self._testvar = None
@property
def testvar(self):
return self._testvar
@testvar.setter
def testvar(self, value):
assert False
testObj = Testclass()
testObj.testvar = "test"
print (testObj.testvar)
由于某种原因,当我运行程序时它会打印“test”,但我希望它打印“None”,甚至在我使用时可能会抛出错误
testobj.testvar = "test"
【问题讨论】:
-
您没有定义二传手。您只是通过将其设置为
"test"来覆盖您的属性。如果你想定义一个setter,那么你需要定义一个用@testvar.setter装饰的函数。并确保你的班级inherits fromobject。 -
但即使我使用`@testvar.setter def testvar(self, value): assert False`它做同样的事情
-
阅读我提供的链接,你很可能没有继承
object。 -
啊不,不是哈哈,我没有意识到我必须从对象继承...ty。 :) 我希望这是一个实际的答案,我会将其标记为解决方案。大声笑
-
只需点击副本的链接并为接受的答案投票。 :)
标签: python python-2.7 class setter getter