Properties for modules?
James Stroud
jstroud at mbi.ucla.edu
Mon Jun 11 18:06:29 EDT 2007
More information about the Python-list mailing list
Mon Jun 11 18:06:29 EDT 2007
- Previous message (by thread): bgl Python on Mac OS X
- Next message (by thread): Properties for modules?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Ed Leafe wrote: > I have a simple module that reads in values from disk when > imported, and stores them in attributes, allowing for code like: > > >>> import moduleFoo > >>> print moduleFoo.someSetting > 'the value' > > What I'd like to do is have a more property-like behavior, so that > if they try to set the value of moduleFoo.someSetting, it also persists > it to disk. But properties are really only useful in instances of > classes; if I define 'someSetting' as a property at the module level, I > get: > > >>> import moduleFoo > >>> print moduleFoo.someSetting > <property object at 0x78a990> > > Does anyone know any good tricks for getting property-like behavior > here? > > -- Ed Leafe > -- http://leafe.com > -- http://dabodev.com Most pythonic and recommended would be to create a class inside moduleFoo that has the functionality you describe, instantiate an instance, and then import reference to the instance into the local namespace. This will be essentially equivalent to "module level properties" as you describe them. # moduleFoo.py def get_setting(self, name): return do_whatever(name) def set_setting(self, name, arg): return do_whatever_else(name, arg) class Foo(object): someSetting = property(set_setting, get_setting) foo = Foo() # program.py from moduleFoo import foo foo.someSetting = some_value # etc. Of course, its probably better to move the getters and setters into Foo if they will only be used in foo context. James
- Previous message (by thread): bgl Python on Mac OS X
- Next message (by thread): Properties for modules?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list