如何在不破坏向后兼容性的情况下,将模块拆分为多个文件?

37 投票
1 回答
17140 浏览
提问于 2025-04-18 08:59

假设我有一个叫做 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>

撰写回答