special method in module
Fredrik Lundh
fredrik at pythonware.com
Wed Nov 16 07:03:55 EST 2005
Jan Procházka wrote:
> can have modules special methods?
no, but you can replace the module object with something that can have
special methods:
$ more module.py
import sys
class Module:
def __getitem__(self, value):
return value
sys.modules[__name__] = Module()
$ python
>>> import module
>>> module[10]
10
as with any other introspection hack, you should only use this if you have
very good reasons.
(saving some typing in import statements is not a good reason; creating a
module that's a transparent proxy to some external system might be. but
in such cases, you should stick to attribute hooks/descriptors, and make
sure that code that uses your proxy looks like code that uses an ordinary
module. Python always works better if you use it to write Python code...)
</F>
More information about the Python-list
mailing list