web-dev-qa-db-ja.com

Pythonクラスの属性として関数にアクセスする

私は、クラスのインスタンスメソッドに属性としてアクセスすることが(厳密には必要ありませんが)非常に役立つ状況にあります。 (これは、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...>>
41
Brian Hicks

@property デコレータ。

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

property のデコレータ形式を見てください。

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