您是否需要使用__init__.py从包中的模块中干净地导入类?

时间:2013-06-12 20:02:42

标签: python python-module

假设我有一个src文件夹和一个名为Foo的包,其中一个名为Foo的模块包含一个名为Foo的类。然后在src文件夹中,我有一个主模块,希望直接在其命名空间中使用Foo类。

-src
    -Foo
        __init__.py
        Foo.py
    main.py

我相信我可以做这样的事情

main.py

from Foo.Foo import Foo

或将其添加到包init

import Foo

from Foo import Foo

然后在主要我可以尝试

 from Foo import Foo

但理想情况下我希望能够把

import Foo
在main.py中

并将该类直接用作Foo(不是Foo.Foo)

对于命名包,模块和类都可能不是最佳实践,但似乎我遇到了它确实有意义的情况。我也知道我应该将模块名称全部改为小写,但我保留了这个例子。

1 个答案:

答案 0 :(得分:0)

您需要使用__init__.py使Python将文件夹识别为包含可自行导入的文件或模块的模块。因此,

  • 不,从技术上讲,您不需要它来导入课程 - 您可以from myfile import myclass
  • 但是,根据您的结构,您需要__init__.py,以便对于Foo文件夹之外的模块,它将被识别为可导入模块。