2013-07-09 3 views
32

을 정의되지 않은, 내가 가진 :파이썬 : 나가서 설명하자면 NameError : 글로벌 이름이 '...'내 코드에서

class A: 
    def a(): 
     ...... 

    def b(): 
     a() 
     ...... 
    b() 

그런 다음 컴파일러는 말할 것이다 "나가서 설명하자면 NameError가 :. 전역 이름은()가 정의되어 있지 않습니다" 클래스 A에서 모든 물건을 꺼내면 문제가되지 않지만 클래스 A에서 메서드를 어떻게 정의 할 수 있습니까? 고맙습니다.

+0

아니요, 예외를 throw하는 컴파일러가 아닙니다. 이를 수행하는 것은 파이썬 인터프리터 루프입니다. –

+0

왜 클래스 정의 내부에서 a()를 호출하겠습니까? –

+0

@ TravisGD 나는 항상 자바에서 이것을 수행한다. 다른 메소드에서 메소드가 호출된다 ... – Robert

답변

58

ab에서 호출하려면 self.a()으로 전화해야합니다. a이 아니며 전체 기능인이며 클래스의 메소드입니다.

미세한 세부 정보를 얻으려면 Python tutorial on classes을 더 읽고 싶을 수 있습니다.

+0

감사합니다.하지만 메소드 매개 변수에 "self"를 추가해야합니까? a (self), b (self)? – Robert

+0

또한 Aa() 정적 메서드 또는 Aa() 인스턴스를 인스턴스화하기 전에 Aa() 호출하려는 클래스 메서드를 "자체"(첫 번째 인스턴스 메서드 인수) ~ Aa()는 정의되지 않습니다. 나는 왜 이것이 하나의 논쟁 거리가 될지 모르겠다. –

+0

@Matthias 고마워 ... 나는 그것을 공부 중이다 .. – Robert

관련 문제