2010-04-23 243 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