Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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_Python 3.x_Python 2.7 - Fatal编程技术网

Python 是否覆盖差异实例变量中的值?

Python 是否覆盖差异实例变量中的值?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,为什么要将前面的值放入不同的实例变量中 例如: d1=myDict() d2=myDict() d1.转让(2,3) d2.转让(2,2) 打印(d1.getval(2)) 打印(d2.getval(2)) 类myDict(对象): “”“在不使用字典的情况下实现字典”“” aDict={} 定义初始化(自): “”“表示的初始化”“” #填写这个 def分配(自身、k、v): “”“k(键)和v(值),不可变对象”“” #填写这个 self.k=k 自我评价,自我评价 如果self.k不在m

为什么要将前面的值放入不同的实例变量中

例如:

d1=myDict()
d2=myDict()
d1.转让(2,3)
d2.转让(2,2)
打印(d1.getval(2))
打印(d2.getval(2))
类myDict(对象):
“”“在不使用字典的情况下实现字典”“”
aDict={}
定义初始化(自):
“”“表示的初始化”“”
#填写这个
def分配(自身、k、v):
“”“k(键)和v(值),不可变对象”“”
#填写这个
self.k=k
自我评价,自我评价
如果self.k不在myDict.aDict中:
self.aDict[self.k]=self.v
其他:
self.aDict[self.k]=self.v
def getval(self,k):
“”“k,不可变对象”“”
#填写这个
如果myDict.aDict中有k:
返回myDict.aDict[k]
其他:
KeyError('KeyError已成功引发')
#返回myDict.aDict[k]
def删除(self,k):
“”“k,不可变对象”“”
#填写这个
如果myDict.aDict.keys()中有k:
德尔·麦迪克特.阿迪克特[k]
其他:
raise KeyError('KeyError已成功引发')
定义(自我):
返回str(myDict.aDict)
d1=myDict()
d2=myDict()
d1.转让(2,3)
d2.转让(2,2)
打印(d1.getval(2))
打印(d2.getval(2))
我的输出:

2
2
4
1
正确输出:

3
2
4
1

aDict
已定义为类级属性,这意味着
myDict
的所有实例将共享相同的
aDict

要为每个实例分配一个单独的
aDict
,您应该在
\uuuu init\uuu
方法中执行此操作

def __init__(self):
    self.aDict = {}

看起来,
aDict
不是一个实例变量,而是一个静态变量。这意味着在类级别上只有一个
aDict
实例,该实例由
myDict
类的所有实例共享。因此,您在任何给定的
myDict
实例中对
aDict
所做的任何更改都将反映在所有
myDict
实例中


此外,我想指出的是,你没有按照作业的指示去做。你的类的docstring说明你必须在不使用字典的情况下实现这个类。

我得到了以前的实例变量值,尽管我声明了两个不同的实例变量。如果你的任务是在不使用字典的情况下实现字典,你不应该使用
aDict={}
-字典。你太棒了,兄弟。我终于在这门课上得了满分。因为这个小问题,我输了6分。非常感谢你!