1

是否可以用类覆盖模块?

让我解释,

这是文件系统

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

是否可以覆盖config.pyfromfoo.bar.__init__.py以便每当有人导入时foo.bar.config他们正在导入覆盖config而不是版本 from config.py

如果是,我该怎么做?

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

4

1 回答 1

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
于 2013-09-21T17:32:03.600 回答