2013-02-12 3 views
0

여기에 실제 코드 전체를 게시하는 데 많은 어려움이 없으므로 문제를 일반화하기 위해 최선을 다할 것입니다. 함수 (x라는 이름 지정)는 코드 시작 부분에 정의됩니다. 그런 다음 클래스 (메소드 z 및 z가 있고 결국 x를 호출 함)를 별도의 .py 파일에서 가져옵니다. 그 클래스의 객체가 생성됩니다. z가 호출 된 후에 "전역 이름 'x'가 정의되지 않았습니다."오류가 발생합니다. 그런 다음 내 .py 파일의 모든 코드를 단일 파일에 붙여 넣은 다음 def (x)를 맨 위에 붙여서 어떤 일이 발생하는지 확인합니다. 물론, 의도 한대로 작동했습니다. 이전 방식으로 어떤 문제가 발생하지 않도록하십시오. (나는 그것을 고수하기를 더 좋아합니다.) 사실상 동일하지 않습니까?클래스 가져 오기 및 NameError

답변

2

전역 모듈 당 , 그리고 기능은에 정의 된 모듈에 전역을 찾아보십시오.

그래서 spam라는 기능에 액세스해야 bar라는 이름의 모듈에 정의 된 클래스 Foo는 찾아 볼 것 그 함수는 자신의 네임 스페이스이기 때문에 모듈 bar에 있습니다.

함수가 가져온 모듈에서 전역 변수를 검색하는 경우, 사용하고자하는 함수의 모든 종속성을 반복적으로 가져와야합니다. 이것은 실용적이지 않습니다.

+0

나를 지워 줘서 고마워, +1. 그래도 "바"(템플릿의 일종)를 변경하거나 모든 것을 하나의 모듈에 넣는 것보다 내 프로그램을 실행하는보다 실용적인 방법을 생각하지 않습니다. – morris

+0

morris : 모듈은 필요한 것들이있는 다른 모듈을 가져올 수 있으므로 모든 것을 하나의 모듈에 넣을 필요가 없습니다. – martineau

+0

@ morris : 함수도 최고급 객체입니다. 함수에 대한 참조를 전달할 수 있습니다 (함수를 호출하지 않고 이름 사용). API에서 임의의 기능을 수행해야하는 경우 –