2013-06-11 46 views
0

我想學習如何使GUI與特質。我是面向對象編程的新手,我是Python新手。我在網上找到的大多數例子都沒有在Hastraits子類中使用任何構造函數。我應該忘記def init(self,* arg)構造函數嗎?還是我應該強迫自己使用它?我應該使用構造函數與HasTraits子類

例如,以從例如: Change property parameter from within class constructor [Python/Traits]

從DrSAR代碼是我最簡單而優雅的所有例子;但它不使用構造函數。我錯過了什麼 ?

預先感謝您的幫助,

LLG

回答

3

簡短的回答:沒有,從HasTraits繼承時不寫__init__()初始化。

HasTraits類定義了一個通用且非常靈活的__init__(),它接受給定的關鍵字參數並將值分配給相應的屬性。你的子類將繼承這個初始化器。鑑於特徵定義通常爲每個屬性提供合理的默認值,通常沒有理由需要另一個初始化器。有些情況下,人們想要重寫這個初始化程序,但它們相對較少。我可能只會在我編寫的每100個左右的類中這樣做一次。

如果您想要練習編寫標準從對象Python的子類化的初始化器,對不起。 Traits有自己的一套約定和最佳實踐,除了一般的面向對象和Python原則之外,您還將學習這些約定和最佳實踐;前者中的一些人會對後者進行討論。

+0

謝謝,這解決了我無法弄清楚的其他問題(問題:'@ on_trait_change'不工作)。 – JoePasq

相關問題