请指出我的代码中的错误。如何使用get/set方法?
class Foo:
def get(self):
return self.a
def set(self, a):
self.a = a
Foo.set(10)
Foo.get()
类型错误:设置()恰恰2位置参数(1给出)
如何使用__get__()
/__set__()
?
请指出我的代码中的错误。如何使用get/set方法?
class Foo:
def get(self):
return self.a
def set(self, a):
self.a = a
Foo.set(10)
Foo.get()
类型错误:设置()恰恰2位置参数(1给出)
如何使用__get__()
/__set__()
?
How to use
__get__()/__set__()
?
像这样,如果你有Python3。 Python2.6中的描述符不希望为我正常工作。
的Python v2.6.6
>>> class Foo(object):
... def __get__(*args): print 'get'
... def __set__(*args): print 'set'
...
>>> class Bar:
... foobar = Foo()
...
>>> x = Bar()
>>> x.foobar
get
>>> x.foobar = 2
>>> x.foobar
2
的Python V3.2.2
>>> class Foo(object):
... def __get__(*args): print('get')
... def __set__(*args): print('set')
...
>>> class Bar:
... foobar = Foo()
...
>>> x = Bar()
>>> x.foobar
get
>>> x.foobar = 2
set
>>> x.foobar
get
你当然应该包括'self.a = 0'或类似的东西在'__init__'方法了。另外,你不应该在Python中使用简单的getter/setter。直接改变它:'Foo()。a = 42'。如果你必须验证你的输入,你应该使用'property.setter'。 – Gandaro 2012-02-16 18:10:48