2010-04-23 127 views
1

目前,我有一个解析器和多个一起工作的类。在模块中导入类

For Instance:TreeParser创建多个Product和Reactant模块,然后创建多个Element类。 TreeParser由同一模块内的渲染方法调用,该模块由导入器调用。

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

编辑:

当导入调用模块内的另一个高清模块的一部分,你怎么调用高清如果没有进口?

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的顶部吗?

回答

3

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

我真的不希望在每一个电话前加上模块名的类

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

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

如果有帮助,我不喜欢这种风格,无论是当我第一次来到Python时,但现在我明白,它消除了我称之为“匹配”的许多函数中的任何含糊不清,特别是当我回来阅读我六个月前写的代码。

2

我不确定你的问题是什么,是你只是想输入较少?

  • 得到一个体面的源代码编辑器与自动完成!
  • 你可以做import longmodulename as ln和使用的ln.something代替longmodulename.something
  • 你可以做from longmodulename import (something, otherthing)和使用something直接

import *从来都不是一个好主意,它的编码工具食堂,默默的突破,使读者想知道的东西被定义等等......

+0

你怎么知道整个模块是否被导入?是否有某种自我指向当前模块? – CodeJoust 2010-04-23 16:13:36

+0

没有(合理的)方法来知道一个模块是如何导入的,没有任何人需要知道的理由。你在做什么? – 2010-04-23 16:29:56