2013-09-21 2 views
1

Возможно ли переопределить модуль с классом?Переопределение модуля python

Позвольте мне объяснить,

Вот файловая система

foo 
|-- bar 
| |-- __init__.py 
| |-- config.py 
|-- __init__.py 

Можно ли переопределить config.py из foo.bar.__init__.py так, что всякий раз, когда кто-то импортирует foo.bar.config они импортируют перекрываться config вместо версии от config.py?

Если да, то как это сделать?

Ps: Я буду переопределять config.py на основе определенных условий.

+0

Если вы можете изменить 'foo/bar/__ init __. Py', почему вы не можете просто обновить' foo/bar/config.py'? – chepner

ответ

4

Просто определите класс в foo/bar/__init__.py с именем config и который будет импортирован. Но почему бы вам просто не изменить config.py?

In [4]: !ls foo 
__init__.py bar/ 
In [5]: !ls foo/bar 
__init__.py config.py 
In [6]: !cat foo/bar/__init__.py 
class config(object): 
    pass 
In [7]: from foo.bar import config  
In [8]: type(config) 
Out[8]: type 

$ echo "" > foo/bar/__init__.py 
$ ipython 

In [1]: from foo.bar import config  
In [2]: type(config) 
Out[2]: module 
Смежные вопросы