Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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中高效地定义大量类属性_Python - Fatal编程技术网

在Python中高效地定义大量类属性

在Python中高效地定义大量类属性,python,Python,我经常浏览Stack Overflow,关于这个问题已经有很多话题了。然而,没有一个解决方案是我100%接受的 我需要定义一个具有50多个默认值属性的类,并编写示例(以三个属性为例): 这并不是我真正想做的,因为这个列表太长,无法阅读。设置所有属性的一种方法是: class A: def __init__(self, attribute1="default1", attribute2="default2", attribute3="default3"): for

我经常浏览Stack Overflow,关于这个问题已经有很多话题了。然而,没有一个解决方案是我100%接受的

我需要定义一个具有50多个默认值属性的类,并编写示例(以三个属性为例):

这并不是我真正想做的,因为这个列表太长,无法阅读。设置所有属性的一种方法是:

class A:

    def __init__(self, attribute1="default1", attribute2="default2", attribute3="default3"):

           for key, value in vars().items():
               setattr(self, key, value)

但随后我得到了一个警告,关于从class
a
创建的实例中未解析的属性引用,我也希望避免这样做。有没有一种方法可以在不单独指定每个属性引用的情况下设置属性引用?

普通Python没有警告,因此这些警告可能是由IDE生成的。你用的是什么IDE?禁用警告的方法因产品而异。是的,您当然是对的。我正在使用IntelliJ,但未解析的属性引用也会降低软件的可用性,因为属性不会自动完成列出:)“我需要定义一个具有50多个默认值属性的类”-那么您可能会遇到更广泛的设计问题,请参见,例如,您可以覆盖
\uuu getattr\uuu
以委托给
self.dict
,以便用户仍然可以正常访问您的属性。您的IDE甚至可能会注意到,“没有一个解决方案对我来说是100%可接受的”-请更具体一些。你看到了什么样的解决方案,它们到底有什么问题?这样我们就可以避免告诉你你已经知道的事情。
class A:

    def __init__(self, attribute1="default1", attribute2="default2", attribute3="default3"):

           for key, value in vars().items():
               setattr(self, key, value)