我在一个python文件中定义了几个类。我的愿望是用这些创建一个库。理想情况下,我想以这样一种方式导入库,即我可以使用没有前缀的类(比如mylibrary.myclass()而不是myclass()),如果这就是你可以称之为的东西,我不完全确定因为我是初学者。
实现这一目标的正确方法是什么,或者最佳结果是什么?在__init __中定义所有类?将它们全部定义在一个文件中,因为我现在有像AllMyClasses.py一样?或者我应该为库目录中的每个类都有一个单独的文件,如FirstClass.py,SecondClass.py等。
我意识到这个问题对谷歌来说应该很容易,但是因为我对python和编程一般都很陌生,所以我还没有弄清楚在这种情况下正确的关键字是什么(例如作为我对“前缀”的不确定性)
答案 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)
如果它仅供您个人使用,您可以将所有课程Class1
,Class2
,...放在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