2012-07-18 23 views
3

不是特定的編碼問題,而是一般的程序結構。何時從文件中提取默認值?

我是那些自學成才的業餘愛好程序員之一,我不知道這裏最好的路線是什麼。我想創建一個包含4個變量(名稱,objID,a和b)的對象。例如:

class myObj: 
    def __init__(self, objName, objID): 
     self.name = objName 
     self.objID = objID 
     self.a = 0 
     self.b = 0 

我的問題/問題是我想爲A和B的初始值從.txt文件拉的基礎上的ObjID值。我實際上需要的不僅僅是2個變量,而且我將用十幾種不同的類型創建數百個這樣的對象。

我不認爲我想從這個類中讀取文件,因爲我相信每次創建對象時都會重新打開該文件,而且我不太喜歡將它拉入列表/數組/字典中並將它傳遞給類,因爲myObj類只能從其上方的對象調用,而且還有幾十個實例。

澄清 - 我打算創建100個'topObj'對象,每個對象都有5-10個'myObj'對象,每個'myObj'都有起始值(稍後會改變),從文本文件中拉出來,不知道何時何地從文本文件中讀取數據而不讀取500-1000次。

希望這使得一些感覺的外表。

感謝,
DB_

+2

我會先從文件中讀取,解析它們,然後將這些值存儲在字典中。在實例化每個類時,可以將字典作爲參數傳遞,也可以將字典設置爲myObj中的類變量(不是實例變量)。 – 2012-07-18 21:44:53

+1

如果你用同樣的初始值反覆創建同一個對象,你可以看看只創建一次,然後[複製它](http://docs.python.org/library/copy.html) – ernie 2012-07-18 21:48:24

回答

2

我不認爲我想讀從這個類的文件,

大概不會因爲類代表一個條目,所以你必須就像你說的那樣在每個條目上搜索整個文件。

我真的不喜歡把它拉到list/array/dictionary中,並將它傳遞給類,因爲myObj類只能從它上面的一個對象中調用,還有幾十個實例。

如果你不喜歡,你不必將它存儲在實例中。

只需將整個文件讀入字典並將其傳遞到需要的地方即可。這不像每次都克隆字典。

topObj然後可以給所有myObj構造函數那個字典。無論如何,它始終是同一個字典,我不認爲它有什麼壞處,恰恰相反:它是明確的,所以它是Python的方式。

您可能需要一些快速查找條目的方法,這就是您可以這樣做的方法。

從文本文件

拉從只有一個文本文件,獨立於topObjs的?然後將文本文件的內容讀取到字典中並傳遞(如果需要,可以將其放入加載函數中以使其整齊)。

+0

+1爲了方便,我建議讓字典變成一個類變量。 – 2012-07-18 22:05:48

+0

聽起來就是我想要的。在'main'中打開文件傳遞給每個topObj只是讓它們感覺很奇怪,所以他們可以將它傳遞給它們的'myObj'。感謝所有幫助。 – 2012-07-19 13:17:20