Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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
Python3:如何创建同一类的不同对象的dict?_Python_Python 3.x - Fatal编程技术网

Python3:如何创建同一类的不同对象的dict?

Python3:如何创建同一类的不同对象的dict?,python,python-3.x,Python,Python 3.x,我想创建一个dict,它包含同一类的几个对象。每个对象必须是独立的。 比如: #!/usr/bin/python3 class myReserve(): myList = dict() def __init__(self, initName): self.myName = initName self.setList() def setList(self): if self.myName == "fruit":

我想创建一个dict,它包含同一类的几个对象。每个对象必须是独立的。 比如:

#!/usr/bin/python3

class myReserve():

    myList = dict()

    def __init__(self, initName):
        self.myName = initName
        self.setList()

    def setList(self):
        if self.myName == "fruit":
            self.myList[0] = "Orange"
            self.myList[1] = "Lemon"
        elif self.myName == "vegetable":
            self.myList[0] = "Tomato"
            self.myList[1] = "Carrot"
        #If neither fruit nor vegetable
        #myList should be empty.


myStore = dict()
myStore[0] = myReserve("fruit")
myStore[1] = myReserve("vegetable")
myStore[2] = myReserve("spices")

print(myStore[0].myList)
这张照片是:

{0: 'Tomato', 1: 'Carrot'}
我以为它会打印:

{0: 'Orange', 1: 'Lemon'}
我知道在Python中对象是通过引用传递的

dict1 = {"var": 128}
dict2 = dict1
dict2["var"] = 0
print(dict1["var"])
将打印:

0

通过创建一个类,我想为不同的对象创建一个结构。我不理解第一个代码示例的行为。是否可以用Python的方式执行类似的操作?

您的问题是在类级别定义
myList
,这样它就被
myReserve
的每个实例共享。请尝试在
myReserve.\uuuu init\uuuu
中定义它:

class myReserve():
    def __init__(self, initName):
        self.myList = dict()
完整代码:

#!/usr/bin/python3

class myReserve():
    def __init__(self, initName):
        self.myList = dict()
        self.myName = initName
        self.setList()

    def setList(self):
        if self.myName == "fruit":
            self.myList[0] = "Orange"
            self.myList[1] = "Lemon"
        elif self.myName == "vegetable":
            self.myList[0] = "Tomato"
            self.myList[1] = "Carrot"
        #If neither fruit nor vegetable
        #myList should be empty.


myStore = dict()
myStore[0] = myReserve("fruit")
myStore[1] = myReserve("vegetable")
myStore[2] = myReserve("spices")

print(myStore[0].myList)