__getattr__ functionality for modules?

Alex delete.this.part.alex.news at attbi.com
Sun May 18 18:18:39 EDT 2003


Alex wrote:

> Stefan Franke wrote:
> 
>> Is there a way to achieve for modules what overriding __getattr__ does
>> for classes?
>> 
>> My problem: I want an infinite number of identifiers appear as if they
>> were defined in the global namespace.
>> 
>> The identifiers have structured names (say, id2m5, id2m6, id3m2, ...),
>> and I'd like to generate the respective values on the fly and cache
>> them for subsequent lookups.
>> 
>> If they were attributes of an object it would be trivial, but how do I
>> achieve this for name lookups in the __main__ (or any other) module?
>> 
>> Stefan
> 
> My experience is that getattr works on modules other than __main__.  For
> __main__, I suppose you could use the globals() dictionary.
> 
> Alex
> 
> 
> Python 2.2.2 (#1, May 11 2003, 11:57:38)
> [GCC 3.2.2] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import os
>>>> getattr(os, 'path')
> <module 'posixpath' from '/usr/lib/python2.2/posixpath.pyc'>
>>>>
>>>> class A:
> ...   pass
> ...
>>>> globals()['A']
> <class __main__.A at 0x8125084>
>>>> globals()['B']='this is a test'
>>>> B
> 'this is a test'
>>>>
        

PS: I have to ask, why do you want these not encapsulate the identifiers in
a class?




More information about the Python-list mailing list