Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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_Class_Dictionary - Fatal编程技术网

Python 加上';它是一个类的属性

Python 加上';它是一个类的属性,python,class,dictionary,Python,Class,Dictionary,我有一门课是这样的: class MyClass: def __init__(self, id, names): self.id = id self.names = names 稍后,我会这样做: classlist = [] classlist.append(MyClass("1", {"Key1", "Value"})) #add first key-value pair classlist[0].names["Key2"] = "New Value

我有一门课是这样的:

class MyClass:
    def __init__(self, id, names):
        self.id = id
        self.names = names
稍后,我会这样做:

classlist = []
classlist.append(MyClass("1", {"Key1", "Value"})) #add first key-value pair
classlist[0].names["Key2"] = "New Value" #add second key-value pair
但是它在第三行失败了
TypeError:“set”对象不支持项分配

我是Python新手,请教我如何正确操作。

您传递的是一个集合,而不是字典。应该是

classlist.append(MyClass("1", {"Key1": "Value"}))

注意
而不是
分隔键1和值
{arg,arg,arg}
是创建集合的缩写。

您应该使用“:“for dictionary

现在我觉得自己很笨。谢谢你的提示@彼得。这是一个容易犯的错误。没必要觉得自己很笨。但是,答案是错误的。Python的内置异常通常非常善于指出错误。在错误消息似乎没有帮助的情况下,几乎总是由于缺少括号而导致的“类的属性”在Python中意味着非常特定的东西;而你的代码却没有。要使其成为类属性,它将出现在
MyClass.names
上,但您可以在
上的
\uuu init\uuuu()
方法中设置它。我们通常称之为“实例的属性”。希望这有助于澄清一些困惑(这与您的实际问题无关)