使用CPython 3.8.2+(984a5,执行以下代码时不会引发错误。结果是一个字典,它打印时好像它具有的值是存储了相同值的实例。
class Foo(object):
def __init__(self, name):
self.name = name
def __repr__(self):
return name # this is undefined (missing `self.`)
optable = dict()
for name in ['a', 'b']:
optable[name] = Foo(name)
print(optable)
print(optable['a'].name)
print(optable['b'].name)
此脚本打印
{'a': b, 'b': b}
a
b
出乎意料的是,两种表示形式均被打印,并且均为“ b”。
这可能是CPython错误吗?
如评论中所说,做