정의되지 않은 변수는 해당 이름이 정의 된 반복 범위에있는 경우 오류를 발생시키지 않습니다.

이오 아니스 필리 피디 스

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관