重写python模块

重写python模块,python,overriding,python-module,Python,Overriding,Python Module,是否可以用类重写模块 让我解释一下 这是文件系统 foo |-- bar | |-- __init__.py | |-- config.py |-- __init__.py 是否可以从foo.bar.\uuuu init\uuuuu.py覆盖config.py,这样每当有人导入foo.bar.config时,他们导入的都是覆盖的config,而不是从config.py导入的版本 如果是,我怎么做 Ps:我将根据某些条件重写config.py。只需在foo/bar/\uuu init\u

是否可以用类重写模块

让我解释一下

这是文件系统

foo
|-- bar
|   |-- __init__.py
|   |-- config.py
|-- __init__.py
是否可以从
foo.bar.\uuuu init\uuuuu.py
覆盖
config.py
,这样每当有人导入
foo.bar.config
时,他们导入的都是覆盖的
config
,而不是从
config.py
导入的版本

如果是,我怎么做


Ps:我将根据某些条件重写config.py。

只需在
foo/bar/\uuu init\uuuuuuuuuuuuuuuuuuuuuuupy
中定义一个名为
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

只需在
foo/bar/\uuuuu init\uuuuu.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

如果你可以修改
foo/bar/\uuu init\uuuuuuuuuuuuuuuuupy
,为什么你不能简单地更新
foo/bar/config.py
?如果你可以修改
foo/bar/\uuuuuuuuuuuuuuuuuuuuu init.py
,为什么你不能简单地更新
foo/bar/config.py