导入几个类的最佳方法

时间:2018-02-10 10:21:53

标签: python class import

我在一个python文件中定义了几个类。我的愿望是用这些创建一个库。理想情况下,我想以这样一种方式导入库,即我可以使用没有前缀的类(比如mylibrary.myclass()而不是myclass()),如果这就是你可以称之为的东西,我不完全确定因为我是初学者。

实现这一目标的正确方法是什么,或者最佳结果是什么?在__init __中定义所有类?将它们全部定义在一个文件中,因为我现在有像AllMyClasses.py一样?或者我应该为库目录中的每个类都有一个单独的文件,如FirstClass.py,SecondClass.py等。

我意识到这个问题对谷歌来说应该很容易,但是因为我对python和编程一般都很陌生,所以我还没有弄清楚在这种情况下正确的关键字是什么(例如作为我对“前缀”的不确定性)

2 个答案:

答案 0 :(得分:2)

可以在python站点上的modules(单个文件)或packages(在带有__init__.py文件的目录中)的教程中找到更多信息。

建议的方式(根据the style guide)是专门拼出每个类的导入。

from my_module import MyClass1, MyClass2
object1 = MyClass1()
object2 = MyClass2()

虽然您也可以缩短模块名称:

import my_module as mo
object = mo.MyClass1()

建议避免使用from my_module import *,因为它可能会造成混淆(即使它是某些事情的推荐方式,例如tkinter

答案 1 :(得分:1)

如果它仅供您个人使用,您可以将所有课程Class1Class2,...放在myFile.py中,并使用它们来调用{{ 1}}(没有import myFile扩展名)

.py

来自另一个脚本。如果您希望能够使用没有文件名前缀的类,请导入如下文件:

import myFile

myVar1 = myFile.Class1()
myVar2 = myFile.Class2()

请注意,您要导入的文件应位于Python可以找到的目录中(与运行脚本的位置相同或from myFile import * 中的目录)。

如果要创建用于分发的Python模块,则需要PYTHONPATH。以下是说明:Distributing Python Modules

在查看Python的样式指南PEP 8 on imports后编辑:

  应避免使用

通配符导入(来自 _init_ ),因为它们不清楚命名空间中存在哪些名称,这会使读者和许多自动化工具混淆

所以在这个例子中你应该使用

import