특히, 클래스의 메소드에 정의 된 자유 변수는 어떻게됩니까? 아마이 같은 것입니다 :Python에서 무료 변수에 대한 검색 순서는 무엇입니까?
- 둘러싸 기능 (일시적으로) 범위 => 생성 폐쇄
- 글로벌 (영구) 범위 => (메소드 본문이 실행될 때 그냥 찾아 볼)
- 더 폐쇄를 생성하지
globalname = 0 class Test(object): def method(self): print globalname print Test def outer(): localname = 1 class Test(object): def method(self): print globalname print localname print Test return Test Test().method.__func__.__closure__ # None outer()().method.__func__.__closure__ # (<cell at 0xb7d655b4: type object at 0x82412bc>, <cell at 0xb7d655cc: int object at 0x81b20b0>)
것은 내가 찾을 수 없습니다 : 인상 UnboundLocalError()
는 다음 두 가지 예 정의 시간에 어떻게 다루어 지는지에 대한 많은 문서화. 위의 설명이 맞습니까?
P. 이것은 기본적으로 파이썬에 대해 비 직관적이라고 생각하는 유일한 것입니다. – katrielalex