【问题标题】:should I use constructor with HasTraits subclass我应该使用带有 HasTraits 子类的构造函数吗
【发布时间】:2013-06-11 15:08:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: python enthought traitsui


    【解决方案1】:

    简答:不,从HasTraits 子类化时不要编写__init__() 初始化器。

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

    如果您想练习为 Python 的标准 subclassing-from-object Python 编写初始化程序,抱歉。除了一般的 OO 和 Python 原则之外,Traits 有自己的一套约定和最佳实践;前者中的一些人会反对后者。

    【讨论】:

    • 谢谢,这解决了我的一个问题,否则我无法解决(问题:@on_trait_change 不起作用)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2021-07-05
    相关资源
    最近更新 更多