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 버그 일 수 있습니까?
주석에서 말했듯이 각 인스턴스에 속한 이름을 반환해야합니다. Foo
def __repr__(self):
return self.name
name
대신 전역 반환을 방지 합니다.
또한 개체를 나타내는 올바른 방법 을 사용하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다