9

我正在尝试创建一个包含几个类的包(mypackage),但希望这些类包含在多个文件中。

例如,我希望 class_a.py 包含一个名为 ClassA 的类,等等......

因此,我想要以下文件结构:

  .../mypackage 
       __init__.py
       class_a.py
       class_b.py
       ...

但是,我想按如下方式加载和使用该包:

load mypackage
a = mypackage.ClassA()

我需要做什么(我假设在 __init__.py 文件中)才能使这成为可能。目前,它使用“mypackage.class_a.ClassA()”运行?

4

3 回答 3

4

如前所述,在您__init__.py的课程中,使用以下内容:

from class_a import ClassA
from class_b import ClassB

对于没有类的文件,请使用以下内容:

from . import file_a
from . import file_b

或者如果您只想公开文件的特定方法:

from .file_a import method_a
from .file_b import method_b
于 2018-05-11T12:27:00.853 回答
1

__init__.py从其他文件中导入所有您的,ClassAClassB

然后,您将能够import mypackage使用mypackage.ClassA,或from mypackage import ClassA将其用作 unqualified ClassA

一点背景。

一条import foo语句查找foo.py,然后查找foo/__init__.py,并将该文件中定义的名称加载到当前命名空间中。将您需要成为“顶级”的任何内容放入__init__.py.

另外,如果您倾向于,请查看__all__顶级变量from mypackage import *

于 2013-05-07T17:53:15.447 回答
-1

在您的__init__.py中,添加以下内容:

from class_a import ClassA
from class_b import ClassB

del class_a
del class_b
于 2013-05-07T17:55:37.243 回答