How to make a method into a property without using the @property decorator

P

Phlip

Pythonistas:

Here's the property decorator:

@property
def foo(self): return 'bar'

If I generate foo dynamically, how to I make it a property?

setattr(self, 'foo', property(lambda: 'bar'))

Variations of that are apparently not working.

(I'm heading for a proxy pattern, where if you never call the
generated prop, you never hit the database to load it into memory.)
 
P

Peter Otten

Phlip said:
Pythonistas:

Here's the property decorator:

@property
def foo(self): return 'bar'

If I generate foo dynamically, how to I make it a property?

setattr(self, 'foo', property(lambda: 'bar'))

Variations of that are apparently not working.

You have to put the property descriptor into the class, not an instance:
.... pass
....
'FOO'

(I'm heading for a proxy pattern, where if you never call the
generated prop, you never hit the database to load it into memory.)

You may be better off with __getattr__().

Peter
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,230
Members
46,819
Latest member
masterdaster

Latest Threads

Top