adding properties dynamically (how to?)

André andre.roberge at
Sun Aug 17 14:51:59 CEST 2008

I didn't want to hijack the original thread but I have basically the
same request...

On Aug 17, 7:09 am, Bruno Desthuilliers
<bdesth.quelquech... at> wrote:
> akonsu a écrit :> hello,

> Wrong solution to your problem, I'd say. Let's start again:
> """
>  > i need to add properties to instances dynamically during run time.
>  > this is because their names are determined by the database contents.
> """
> Care to elaborate ? I may be wrong, but I suspect you're trying to roll
> your own python/database mapper. If so, there are quite a couple Python
> ORMs around. Else, please tell us more.

I'm not the original poster, but I'd like to do the same thing (for a
different reason).

I have a program (crunchy) that is extensible via plugins.  New
options available via plugins can be turned on or off (or selected
among a list of options).  I have a module for user preferences (let's
call it that allows the setting of these options (and do
error checking, automatic saving of the options selected for future
sessions, etc.).  These options are implemented as properties.

Currently I have it simplified so that only two lines need to be added
to to add new options; something like
options = { ...
    'new_option': [value1, value2, ..., valueN],

class Preferences(object):

   new_option = make_property('new_option', 'some nicely worded help

make_property is a custom define function that return fgets, fsets,
fdel and doc.

Ideally, I'd like to be able to define new would-be properties from
the plugin and add them to the class prior to creating instances.  In
other words, have something like

for option in options_defined_in_plugins:
   add_option_as_property_to_Preferences(Preferences, option, ...)

user_preferences = Preferences()

Performance in this case would not be an issue.



More information about the Python-list mailing list