请指出我的代码中的错误。
class Foo:
def get(self):
return self.a
def set(self, a):
self.a = a
Foo.set(10)
Foo.get()
TypeError:set()只需要2个位置参数(给定1个)
如何使用__get__()
/ __set__()
?
答案 0 :(得分:4)
它们是实例方法。您必须先创建Foo
的实例:
f = Foo()
f.set(10)
f.get() # Returns 10
答案 1 :(得分:3)
如何使用
__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