在Python类中访问函数作为属性

时间:2011-04-18 15:58:47

标签: python django metaprogramming

我处于这样一种情况:将一个类'instancemethod作为属性访问它是非常有用的(尽管不是绝对必要的)。 (这是一个使用getattr为字典设置一些返回值的API,我不想弄乱整齐的小东西)

我记得读过有关@attribute装饰器的内容,但我找不到(在Python或Django中)

TL; DR:

我该怎么做:

class foo:
    bar = "bar"
    def baz(self):
        return "baz"

这样做:

>>> f = foo()
>>> f.baz
"baz"

(为清晰起见而编辑)而不是:

>>> f = foo()
>>> f.baz
<bound method foo.baz of <__builtin__.foo instance at 0x...>>

2 个答案:

答案 0 :(得分:62)

您可以使用@property装饰器。

class foo(object):
    bar = "bar"
    @property
    def baz(self):
        return "baz"

答案 1 :(得分:12)

看一下property的装饰形式。

@property
def baz(self):
  return "baz"