覆盖python模块

时间:2013-09-21 17:20:06

标签: python override python-module

是否可以使用类覆盖模块?

让我解释一下,

这是文件系统

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

是否可以覆盖config.py中的foo.bar.__init__.py,以便每当有人导入foo.bar.config时,他们都会导入覆盖config而非config.py的版本?< / p>

如果是,我该怎么做?

Ps:我将根据某些条件覆盖config.py.

1 个答案:

答案 0 :(得分: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