【发布时间】:2018-05-02 14:40:17
【问题描述】:
我有一个带有字符串和字典的简单类。当我创建类的多个对象时,显然字典没有正确初始化。所有对象的字典都包含最后创建的对象的条目。代码是:
# a simple class with a string and a dictionary:
class Myclass:
name = ""
valuedict = {}
# a list for objects:
mylist = []
# create 3 objects:
for i in range(3):
mc = Myclass()
mc.name = str(i)
mc.valuedict['name'] = str(i)
mylist.append(mc)
# disply objects in list:
for item in mylist:
print("-----------------")
print("name = ", item.name)
print("name in dict = ", item.valuedict['name'])
输出是:
-----------------
name = 0
name in dict = 2
-----------------
name = 1
name in dict = 2
-----------------
name = 2
name in dict = 2
名称字符串如预期的那样是 0、1 和 2,但字典中的名称在所有 3 个对象中都是 2。问题出在哪里,如何解决?感谢您的帮助。
【问题讨论】:
-
那么您希望
MyClass的每个实例在valuedict中都具有唯一值吗?您需要将def __init__(self):方法添加到您的类并将它们指定为实例属性,例如self.valuedict = {}。值得阅读一些关于 OOP 的教程。
标签: python python-3.x class oop dictionary