出于某种原因,我有一个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"但是我想要它打印"无"或者甚至在我使用
时抛出错误testobj.testvar = "test"
答案 0 :(得分:0)
您正在动态创建一个名为testvar
的新成员变量,并将其添加到您的类中,然后覆盖您的属性名称。
要验证这一点,您可以将分配更改为例如
testObj.testvar2 = "test"
并且一切都会按预期工作,将None
显示为testvar的值。
答案 1 :(得分:0)
将object
添加为父类。
class Testclass(object):
def __init__(self):
self._testvar = None
@property
def testvar(self):
return self._testvar
@testvar.setter
def testvar(self, value):
self._testvar = value
testObj = Testclass()
print(testObj.testvar)
testObj.testvar = "test"
print(testObj.testvar)
>>> None
>>> test
答案 2 :(得分:-1)
我很确定python的工作方式,当你这样做时:
testobj.testvar = "test"
你实际在做的是用字符串“test”替换方法Testclass.testvar()。基本上你是在踩你的功能。也许你打算这样做
testobj._testvar = "test"