代码之家  ›  专栏  ›  技术社区  ›  CodeJoust

在模块中导入类

  •  1
  • CodeJoust  · 技术社区  · 15 年前

    目前,我有一个解析器,它有多个共同工作的类。

    例如:treeparser创建了多个产品和反应物模块,而这些模块又创建了多个元素类。Treeparser由同一模块内的呈现方法调用,该模块从导入程序调用。

    最后,如果包具有依赖项(如re和同一文件夹中的另一个模块),那么需要这些模块的最佳位置在哪里?内 __init__.py 文件还是在模块内部?

    编辑:

    当导入模块中调用另一个def的部分时,如果没有导入该def,如何调用它?

    lib/toolset.py => def add(){ toolset.show("I'm Add"); } def show(text){print text};

    如果该文件是从 main.py => import lib.toolset 然后,将不加载Show方法,或者 main.py => from lib.toolset import show 不会起作用的。

    可以一 import toolset 放在…的顶端 toolset.py ?

    2 回复  |  直到 15 年前
        1
  •  3
  •   eemz    15 年前

    我认为这是你问题的关键陈述。

    我真的不想在每次调用该类之前添加模块名

    我的回答是:我听到你在说什么,但这是Python中的标准实践。

    任何读取“result=match(blah)”之类代码的Python程序员都会假定您在自己的模块中调用了一个本地函数。如果您实际上在讨论re模块中的match()函数,他们会期望看到“result=re.match(blah)”。就这样。

    如果有帮助的话,当我第一次使用Python时,我也不喜欢这种风格,但是现在我很感激它消除了我调用的许多函数中被称为“match”的任何模糊性,特别是当我回来阅读六个月前编写的代码时。

        2
  •  2
  •   Jochen Ritzel    15 年前

    我不太确定你的问题是什么,你只是想少打字吗?

    • 使用自动完成功能获得一个不错的源代码编辑器!
    • 你可以做到 import longmodulename as ln 使用 ln.something 而不是 longmodulename.something
    • 你可以做到 from longmodulename import ( something, otherthing ) 使用 something 直接地

    import * 从来都不是一个好主意,它乱搞编码工具,静静地休息,让读者怀疑东西是被定义的等等…