我有以下简单的python类,它使用property
函数定义getter和setter:
class MyClass():
def get_my_var(self):
print "In get_my_var()"
return None
def set_my_var(self, value):
print "In set_my_var()"
return
my_var = property(get_my_var, set_my_var)
当我实例化这个类并使用getter时,它可以正常工作:
^{pr2}$然而,当我尝试使用setter时,它似乎根本没有被调用。setter中的print语句从不触发:
>>> print "About to do 'x.my_var = 5'"
About to do 'x.my_var = 5'
>>> x.my_var = 5
>>>
为什么吸气剂起作用而塞特不起作用?为什么没有错误?如何让setter作为advertised工作?在
属性需要位于新样式的类上才能正常工作。别忘了从
object
继承!在您需要使用新样式的类:
在Python3中,新的样式类是唯一可以使用的样式,但是您显然在使用2.x(
print
是一个语句)。要获得新样式语义,必须从object
继承。在相关问题 更多 >
编程相关推荐