【问题标题】:Best way to import several classes导入多个类的最佳方法
【发布时间】:2018-02-10 10:21:52
【问题描述】:

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

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

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

【问题讨论】:

    标签: python class import


    【解决方案1】:

    更多信息可以在 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

    【讨论】:

      【解决方案2】:

      如果是供您个人使用,您可以将所有课程 Class1Class2、... 放在 myFile.py 中并调用 import myFile(不带 .py 扩展名)

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

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

      from myFile import *
      

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

      如果您想创建 Python 模块进行分发,则需要 _init_。以下是说明:Distributing Python Modules

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

      应避免使用通配符导入(来自 import),因为它们会使命名空间中存在哪些名称变得不清楚,从而混淆阅读器和许多自动化工具

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

      from myFile import Class1, Class2
      

      【讨论】:

        猜你喜欢
        • 2016-04-30
        • 2017-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-19
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        相关资源
        最近更新 更多