Используя 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".
Может ли это быть C Python ошибка?