如何使用get / set方法?

时间:2012-02-16 18:06:46

标签: python getter-setter

请指出我的代码中的错误。

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__()

2 个答案:

答案 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