2013-02-10 3 views
31

이름이 정의되지 않고, 나는 다음과 같은 오류가 발생하고있다 :이 실행되고이파이썬 나가서 설명하자면 NameError는 : 나는 파이썬 스크립트가

s = Something() 
s.out() 

class Something: 
    def out(): 
     print("it works") 

입니다 : 여기

Traceback (most recent call last): 
    File "C:\Users\Tim\Desktop\pop-erp\test.py", line 1, in <module> 
    s = Something() 
    NameError: name 'Something' is not defined 

이 문제를 일으키는 코드 Windows 7 x86-64에서 Python 3.3.0을 사용하십시오.

Something 클래스를 찾을 수없는 이유는 무엇입니까?

+4

이 문제의 해결책은 정의한 클래스와 함수를 호출하는 것입니다. 파이썬은 클래스 나 메소드를 선언 할 수있는 방법이 없으므로, 함수의 호출을 시작보다는 프로그램의 끝에 두는 것이 유일한 옵션입니다. 다른 옵션은 파일의 맨 위에있는 가져온 라이브러리에 메서드를 넣는 것입니다.이 라이브러리는 항상 먼저 호출됩니다. –

답변

52

당신이 그것을 사용하기 전에 클래스를 정의 :

class Something: 
    def out(self): 
     print("it works") 

s = Something() 
s.out() 

당신은 모든 인스턴스 메서드에 대한 첫 번째 인수로 self을 통과해야합니다.

+0

훌륭합니다, 감사합니다! 나는 자기를 포함시킬 의도 였고, 내가이 짧은 예를 빨리 썼을 때 잊어 버렸다. – user1899679

+0

잘 - 모든 * 방법이 아닙니다. 흥미로운 것을 유지하기 위해서 항상'@ staticmethod'와'@classmethod'가 있습니다 : -P – mgilson

+0

@mgilson 'self' *는'@classmethod'와 함께 작동합니다. 이것은 틀린 이름 일 것입니다. 'cls '라고 불리는). – delnan

2

클래스의 인스턴스를 만들기 전에 클래스를 정의해야합니다. Something의 호출을 스크립트 끝으로 이동하십시오.

당신은 본말을 전도하고 정의하기 전에 절차를 호출 할 수 있지만,이 못생긴 해킹 될 것이며, 여기에 정의 된대로 자신의 롤해야합니다 :

Make function definition in a python file order independent

관련 문제