我正在尝试学习如何使用Traits制作GUI。我是面向对象编程的新手,我是Python的新手。我可以在网上找到的大多数示例都不使用Hastraits子类中的任何构造函数。我应该忘记def init (self,* arg)构造函数吗?或者我应该强迫自己使用它?
例如,举例来自: Change property parameter from within class constructor [Python / Traits]
来自DrSAR的代码对我来说是所有例子中最简单和优雅的代码;但它不使用构造函数。我错过了什么 ?先谢谢你的帮助,
LLG
答案 0 :(得分:3)
简短回答:不,在__init__()
进行子类化时不要编写HasTraits
初始值设定项。
HasTraits
类定义了一个通用且非常灵活的__init__()
,它接受给定的关键字参数并将值分配给相应的属性。您的子类将继承此初始化程序。鉴于特征定义通常为每个属性提供合理的默认值,通常没有理由需要另一个初始化器。有些人确实希望覆盖此初始化程序,但它们相对较少。我可能只会在我写的每100个课程中这样做一次。
如果你想练习从标准子类化对象Python编写初始化器,抱歉。除了一般的OO和Python原则之外,Traits还有自己的一套约定和最佳实践。一些前者会鼓动后者。