__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