Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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中使用dynamic属性安全吗?_Python_Oop - Fatal编程技术网

在python中使用dynamic属性安全吗?

在python中使用dynamic属性安全吗?,python,oop,Python,Oop,我的问题不是技术性的。我使用了一个python包,其中包含许多属性和方法的类非常适合。但是对于我的应用程序,我想存储几个在该类中不存在的附加属性 使用python,如果我设置了一个类中不存在的属性,python只需创建该属性。它起作用了。但我的问题是,这是否是建议的,或者我是否必须实现具有附加属性的子类?例如,它将允许我们记录新属性等…在某种意义上,这有点主观,但有一个明确的答案。不要向原始对象添加新属性,创建一个新类 我至少可以就一个明确的原因进行辩论。一个新属性使对象比以前做得更多,因此它肯

我的问题不是技术性的。我使用了一个python包,其中包含许多属性和方法的类非常适合。但是对于我的应用程序,我想存储几个在该类中不存在的附加属性


使用python,如果我设置了一个类中不存在的属性,python只需创建该属性。它起作用了。但我的问题是,这是否是建议的,或者我是否必须实现具有附加属性的子类?例如,它将允许我们记录新属性等…

在某种意义上,这有点主观,但有一个明确的答案。不要向原始对象添加新属性,创建一个新类

我至少可以就一个明确的原因进行辩论。一个新属性使对象比以前做得更多,因此它肯定违反了规则


因此,创建一个新类来保存这些数据。然而,如果我们真的知道你想做什么,我们可以给你更多的信息。那么,添加更多信息如何?

最好派生另一个类并向子类添加新属性。显然,您不必这样做。很明显,你知道后果和替代方案,以及替代方案的更好之处。所以…你可以选择。如果你创建了一个合适的子类,你可以i)将这些属性初始化为一些默认值,这样如果属性没有设置,你就不会出现命名错误;ii)你可以实现/扩展
\uuuuuueq\uuuuuuuuuu
\uuuuhash\uuuuuuu
\urepr\uuuuu
,等等。相应地,考虑新的属性。