如何将模块拆分为多个文件,而不会向后兼容?

Lip*_*pis 12 python module

假设我有一个model.py看起来像这样的文件:

class Foo():
  ..

class Bar():
  ..
Run Code Online (Sandbox Code Playgroud)

从其他模块我导入model,然后model.Foo() 每当我想引用它们时使用.

import model

foo = model.Foo()
Run Code Online (Sandbox Code Playgroud)

随着这个文件越来越大,我想将每个类拆分成多个文件,但如果可能的话,不要破坏向后兼容性.

我的想法是这样打破它:

model
??? __init__.py
??? foo.py
??? bar.py
Run Code Online (Sandbox Code Playgroud)

但通过这样做,我将不得不将它们称为model.foo.Foo().

所以我的问题是:是否有可能以某种方式将它分成多个文件,但仍然将它们称为model.Foo()

我也应该能够在Foo内部扩展或使用Bar.

msv*_*kon 13

当然可以,只需导入以下类中的类__init__.py:

# in __init__.py
from model.foo import Foo
from model.bar import Bar
Run Code Online (Sandbox Code Playgroud)

然后,当您希望使用它们时,您可以:

>>> import model
>>> model.Bar()
<model.bar.Bar object at 0x31306d0>
Run Code Online (Sandbox Code Playgroud)

要么

>>> from model import Foo
>>> Foo()
<model.foo.Foo object at 0x31307d0>
Run Code Online (Sandbox Code Playgroud)