2010-11-05 73 views
0

我對Python很陌生,所以我仍然迷失在整個命名空間中。 顯然,我已經創建了一個包,裏面有init文件,還有一個classname.py文件。 例如: 從降落傘進口容器,發射器當從包中導入導入的「類」時,如何避免使用package.class()聲明?

我試圖直接實例類容器,但它給了我一個錯誤,所以我不得不將它實例化爲container.Container()。我如何避免這樣做? 基本上,我想要做的是從包中導入一個類,並避免輸入包名和/或文件名。 預先感謝,如果問題不夠清楚,請讓我知道。

UPDATE 結構,我有是: - 降落傘 - 初始化現在的.py

-- container.py 
    Serves as a controller, i'd say, instancing, calling and glueing all the other parts together. 

-- sparkles.py 
    Has two classes: Sparkle and Sparkles. Sparkle is a single element, with only one property so far, and Sparkles serves as a collection. Sparkles() belongs to the Emitter, and Sparkle() belongs to Sparkles(). 

-- emitter.py 
    Emitter could be seen as the user entity. It has a name and an uid, it belongs to a Container and the Container belongs to it. 

,從包我打電話容器和傳遞一些參數外,與Container實例並根據需要分發參數。 我的印象是,這不是做我需要做的最好的方法,它是:創建一個由發射器擁有的閃爍集合。如果你的類是module.py

+0

豪爾赫 - 在每一行的開頭爲固定寬度格式添加四個空格。我試圖清理它,但很難說這個層次結構是什麼意思:) – detly 2010-11-05 06:16:30

回答

2

不要把這個類在它自己的文件

+0

在這種情況下,降落傘是一個帶有__init__文件的目錄(lol)。我如何將所有內容鏈接在一起?或者我應該讓降落傘成爲一個文件,而不是一個目錄? – 2010-11-05 05:35:31

+0

@Jorge,我將不得不更多地瞭解整個軟件包的結構。如果你只是把每個類都放在它自己的文件中,那麼它應該只是一個文件。 – aaronasterling 2010-11-05 05:47:49

+0

這是我到目前爲止:container.py(持有閃閃發光),emitter.py(容器的'所有者'),sparkles.py(包含Sparkle()和Sparkles(),它是一個列表對象,並作爲Sparkle()實例的集合) – 2010-11-05 05:52:11

2
from module import Class 
classInst = Class() 

這將工作。將ContainerEmitter直接放入parachute.py

然後,您可以做

from parachute import Container, Emitter 

import parachute 

container = parachute.Container() 

這基本上可以歸結爲「Python是不是Java所以最好的結果,不要把它當作是」;)