Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我应该将构造函数与HasTraits子类一起使用吗_Python_Enthought_Traitsui - Fatal编程技术网

Python 我应该将构造函数与HasTraits子类一起使用吗

Python 我应该将构造函数与HasTraits子类一起使用吗,python,enthought,traitsui,Python,Enthought,Traitsui,我正在尝试学习如何使用Traits制作GUI。我是面向对象编程新手,也是Python新手。我在网上找到的大多数示例都没有在Hastraits子类中使用任何构造函数。我应该忘记def init(self,*arg)构造函数吗?还是我应该强迫自己使用它 例如,从以下方面进行示例: DrSAR的代码对我来说是所有示例中最简单、最优雅的;但它不使用构造函数。我错过什么了吗 提前感谢您的帮助 LLG简短回答:不,当从HasTraits进行子类化时,不要编写\uu init\uuu()初始值设定项 Has

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

例如,从以下方面进行示例:

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

提前感谢您的帮助


LLG

简短回答:不,当从
HasTraits
进行子类化时,不要编写
\uu init\uuu()
初始值设定项

HasTraits类定义了一个通用且非常灵活的
\uuuu init\uuuu()
,它接受给定给它的关键字参数,并将值分配给相应的属性。您的子类将继承此初始值设定项。鉴于trait定义通常为每个属性提供合理的默认值,因此通常没有理由需要另一个初始值设定项。在某些情况下,确实需要覆盖此初始值设定项,但这种情况相对较少。我可能每写100个左右的类只写一次


如果您想练习从对象Python编写标准子类的初始值设定项,对不起。Traits有自己的一套约定和最佳实践,除了一般的OO和Python原则之外,您还将学习这些约定和最佳实践;前者中的一些将与后者产生争议。

简短回答:不,当从
HasTraits
进行子类化时,不要编写
\uu init\uu()
初始值设定项

HasTraits类定义了一个通用且非常灵活的
\uuuu init\uuuu()
,它接受给定给它的关键字参数,并将值分配给相应的属性。您的子类将继承此初始值设定项。鉴于trait定义通常为每个属性提供合理的默认值,因此通常没有理由需要另一个初始值设定项。在某些情况下,确实需要覆盖此初始值设定项,但这种情况相对较少。我可能每写100个左右的类只写一次


如果您想练习从对象Python编写标准子类的初始值设定项,对不起。Traits有自己的一套约定和最佳实践,除了一般的OO和Python原则之外,您还将学习这些约定和最佳实践;前者中的一些将对后者产生影响。

谢谢,这解决了我的一个问题,我无法解决这个问题(问题:
@on\u trait\u change
不起作用)。谢谢,这解决了我的一个问题,我无法解决这个问题(问题:
@on\u trait\u change
不起作用)。