1

モジュールをクラスでオーバーライドすることは可能ですか?

説明させてください、

ここにファイルシステムがあります

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

config.pyfromをオーバーライドしfoo.bar.__init__.pyて、誰かがインポートするたびに from のバージョンではなくfoo.bar.configoverriden をインポートすることは可能ですか?configconfig.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 に答える