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

Bri*_*cks 39 python django metaprogramming

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

我记得读过一些关于@attribute装饰器的东西,但我找不到一个(用Python或Django)

TL; DR:

我该怎么做:

class foo:
    bar = "bar"
    def baz(self):
        return "baz"
Run Code Online (Sandbox Code Playgroud)

做这个:

>>> f = foo()
>>> f.baz
"baz"
Run Code Online (Sandbox Code Playgroud)

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

>>> f = foo()
>>> f.baz
<bound method foo.baz of <__builtin__.foo instance at 0x...>>
Run Code Online (Sandbox Code Playgroud)

Pra*_*ota 64

你可以使用@property装饰器.

class foo(object):
    bar = "bar"
    @property
    def baz(self):
        return "baz"
Run Code Online (Sandbox Code Playgroud)


Ste*_*eMc 12

看看装饰形式的财产.

@property
def baz(self):
  return "baz"
Run Code Online (Sandbox Code Playgroud)