2013-09-21 148 views
1

是否有可能用类覆盖模块?覆盖python模块

让我解释一下,

这里是文件系统

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

是否可以覆盖从foo.bar.__init__.pyconfig.py这样,每当有人进口foo.bar.config他们进口覆写config,而不是从config.py版本?

如果是,我该怎么做?

ps:我会根据一定的条件重写config.py。

+0

如果你可以修改'foo/bar/__ init __。py',为什么不直接更新'foo/bar/config.py'? – chepner

回答

4

只需在名称为configfoo/bar/__init__.py中定义一个类,该类将被导入。但是,你为什么不改变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