我有一個程序,我正在用Python編寫,它執行以下操作:Python中詳細的__init__方法很糟糕嗎?
用戶輸入文件夾的名稱。在該文件夾中有一個8-15 .dat文件,其擴展名不同。
該程序打開這些dat文件,將它們輸入到SQL數據庫中,然後允許用戶選擇對數據庫所做的不同更改。然後將數據庫導出回.dat文件。大約有5-10種不同的操作可以執行。
我在設計時計劃的方式是爲每組文件創建一個標準類。用戶將輸入文件夾的名稱以及具有特定屬性(文件名,文件字典,文件版本(有不同版本)等的對象)將被創建。確定這些屬性需要打開這些文件中的幾個,讀取文件名等。
該操作是否應該在__init__
方法中執行?或者應該採用在__init__
方法中調用的不同實例方法執行此操作?或者應該將這些方法放在其他位置,並且只有在程序中的其他位置需要該屬性時纔會調用這些方法?
我已經用Java編寫了這個程序。我有一個構造函數調用類中的其他方法來設置對象的屬性。但我想知道Python中的標準做法是什麼。
本質上,我有一組文件可以歸類爲「作業」。不同的功能對此作業執行不同的操作以產生程序的預期結果。這就是爲什麼我認爲最好把它當作一堂課。 – 2012-03-12 15:16:27
看起來這是你的建議: __init __(self,foldername): self.filelist = getfilelist(...); self.fileversion = getfileversion(...); 等? 除了其中一種方法昂貴且僅在某些情況下必需的情況下? – 2012-03-12 15:16:54
如果這就是你的代碼的做法,那麼也許你應該使用[懶惰屬性](http://stackoverflow.com/q/3012421/1235039)。有很多方法可以做到這一點,這取決於您的要求和偏好。 – aquavitae 2012-03-12 15:28:10