如何在不破坏向后兼容性的情况下,将模块拆分为多个文件?
假设我有一个叫做 model.py
的文件,内容大概是这样的:
class Foo():
..
class Bar():
..
我从其他模块中导入这个 model
,然后每次想用到它的时候,就会用 model.Foo()
来引用。
import model
foo = model.Foo()
随着这个文件越来越大,我想把每个类分成多个文件,但希望尽量不影响之前的使用方式。
我的想法是这样分开:
model
├── __init__.py
├── foo.py
└── bar.py
但这样做的话,我就得用 model.foo.Foo()
来引用它们了。
所以我的问题是:有没有办法把它们分成多个文件,但仍然能用 model.Foo()
来引用?
我还希望能够在 Bar
里面扩展或使用 Foo
。
1 个回答
48
当然可以,只需要在 __init__.py
文件中导入这些类:
# in __init__.py
from model.foo import Foo
from model.bar import Bar
然后当你想使用它们的时候,可以这样做:
>>> import model
>>> model.Bar()
<model.bar.Bar object at 0x31306d0>
或者
>>> from model import Foo
>>> Foo()
<model.foo.Foo object at 0x31307d0>