2013-09-21 176 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