在python中从类动态创建对象

时间:2018-05-13 10:49:47

标签: python python-3.x

我环顾四周但没有找到回答我问题的主题。如果你知道有人可以随意重定向我。

我有两个动态创建的词典。 [编辑:'动态'我的意思是这些词典的大小将根据我提供给程序的文件而有所不同。如其中一条评论所示,我可能会误用这个词。请原谅。]

一个包含R,G,B值的字符串,如下所示:

colors = {0: ('255', '255', '255'), 1: ('255', '148', '0'), 2: ('238', '245', '0'), 3: ('255', '0', '0')}

另一个包含R,G,B值的索引信息,如下所示:

index = {511: 0, 365: 1, 488: 2, 500:0, ...}

我创建了一个类:

class ColorArray:
    indexArray = []
    color = ""

我现在想要在我的'colors'字典中创建与该类一样多的对象,然后在'index'字典中附加所有匹配键的这些对象的indexArray属性

它看起来像这样:

>>>print(ColorArray0.color)
('255', '255', '255')
>>>print(ColorArray1.color)
('255', '148', '0')
>>>ColorArray0.indexArray.append(511)
>>>ColorArray1.indexArray.append(365)

1 个答案:

答案 0 :(得分:0)

只需定义如何在类__init__中处理它,是的,你应该创建类的实例而不是创建类属性:

class ColorArray(object):
    def __init__(self, id, color, index = None):
        self.id = id
        self.colors = color
        self.index_array = [x for x, y in index.items() if y == id] if index else []

然后只需将课程收集到你的dict项目中:

result = [ColorArray(id, color, index) for id, color in colors.items()]

这里有live example