我应该使用带有HasTraits子类的构造函数

时间:2013-06-11 15:08:02

标签: python enthought traitsui

我正在尝试学习如何使用Traits制作GUI。我是面向对象编程的新手,我是Python的新手。我可以在网上找到的大多数示例都不使用Hastraits子类中的任何构造函数。我应该忘记def init (self,* arg)构造函数吗?或者我应该强迫自己使用它?

例如,举例来自: Change property parameter from within class constructor [Python / Traits]

来自DrSAR的代码对我来说是所有例子中最简单和优雅的代码;但它不使用构造函数。我错过了什么 ?

先谢谢你的帮助,

LLG

1 个答案:

答案 0 :(得分:3)

简短回答:不,在__init__()进行子类化时不要编写HasTraits初始值设定项。

HasTraits类定义了一个通用且非常灵活的__init__(),它接受​​给定的关键字参数并将值分配给相应的属性。您的子类将继承此初始化程序。鉴于特征定义通常为每个属性提供合理的默认值,通常没有理由需要另一个初始化器。有些人确实希望覆盖此初始化程序,但它们相对较少。我可能只会在我写的每100个课程中这样做一次。

如果你想练习从标准子类化对象Python编写初始化器,抱歉。除了一般的OO和Python原则之外,Traits还有自己的一套约定和最佳实践。一些前者会鼓动后者。