請指出我的代碼中的錯誤。如何使用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