__getattr__ functionality for modules?

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


Alex wrote:

> 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?

That last one accidental got sent of before it finished:  It should of read: 
I have to ask, why not encapsulate the identifiers in a class?







More information about the Python-list mailing list