54

I'm in a situation where it would be extremely useful (though not strictly necessary) to access a class' instancemethod as an attribute. (it's for an API that uses getattr to set some return values for a dictionary and I don't want to mess the neat little thing up)

I remember reading something about an @attribute decorator, but I can't find one (either in Python or Django)

TL;DR:

How do I make this:

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

do this:

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

(edit for clarity) instead of this:

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

2 Answers 2

85

You can use the @property decorator.

class foo(object):
    bar = "bar"
    @property
    def baz(self):
        return "baz"
Sign up to request clarification or add additional context in comments.

2 Comments

this returns <property at 0x121101450> for me
That's not working.
17

Take a look at the decorator form of property.

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.