在模块中导入类

时间:2010-04-23 15:52:35

标签: python namespaces module

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

For Instance:TreeParser创建多个Product和Reactant模块,这些模块又创建多个Element类。 TreeParser由同一模块中的render方法调用,该方法从导入器调用。

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

编辑:

导入模块中调用另一个def的模块的一部分时,如果未导入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 个答案:

答案 0 :(得分:3)

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

  

我真的不想在每次调用类

之前添加模块名称

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

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

如果它有所帮助,我不喜欢这种风格,当我第一次来到Python时,但现在我很欣赏它消除了我所称的“匹配”的许多功能中的哪一个的模糊性,特别是当我来的时候回到我六个月前写的代码。

答案 1 :(得分:2)

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

  • 使用autocomplete获得一个不错的源编辑器!
  • 您可以import longmodulename as ln使用ln.something代替longmodulename.something
  • 您可以from longmodulename import ( something, otherthing )直接使用something

import *永远不是一个好主意,它与编码工具混淆,默默地打破,让读者想知道的东西被定义等等......