2013-04-02 2 views
0

클래스 A가 있고 클래스 A의 클래스 B를 상속 받았습니다. ClassA에 methodY & 메서드 Y가 있습니다. 이 메소드는 classA에서 methodX를 호출합니다. ClassB에 methodZ가 있습니다.Python의 파생 클래스 메서드에서 기본 클래스 메서드 호출

다음은 시나리오입니다 : -

class A(object): 
def methodX(self): 
    .... 
def methodY(self): 
    methodX() 

class B(A) 
def methodZ(self): 
    self.methodY() #says the global methodX is not defined 

내 질문에 내가 어떤 inturn methodZ에서 methodX를 호출 methodY를 호출해야한다는 것입니다. 그게 어떻게 가능해? methodX를 전역 적으로 정의해야합니까? 아니면 다른 대안이 있습니다 .. 미리 감사드립니다!

답변

0

를 호출하는 데 사용되는 객체를 사용하여 객체를 사용하여 함수 methodX() 호출합니다. 확인이 :

$ python test.py 
B.methodZ 
A.methodY 
A.methodX 
$ 

내가 당신을 위해 ...

3

methodY에는 self.methodX()으로 전화해야합니다.

+0

Sorry..That 여기에 오타했다 찾고 있던 무슨 생각 :

class A(object): def methodX(self): print "A.methodX" def methodY(self): print "A.methodY" self.methodX() class B(A): def methodZ(self): print "B.methodZ" self.methodY() b = B() b.methodZ() 

이 출력을 생성합니다. 나는 같은 방식으로 만 호출했다 : self.methodX(). – a4aravind

+0

@ user2234700 이것이 사실이라면 "전역 이름"오류가 발생하지 않았을 것입니다. 실제 코드를 게시하십시오. –

+0

@DanielRoseman 실제로 여기에서 언급 한 methodX()는 이벤트 핸들러이며 methodY()에서 호출하고 있습니다. 그것은 Sikuli 코드입니다. methodY()의 메소드 호출은 다음과 같습니다 : onChange (10, methodX) 여기서 methodX()는 이벤트 핸들러 – a4aravind

0

해당 클래스의 개체를 사용하지 않고도 멤버 함수를 호출 할 수 없으므로이 오류가 발생합니다.

self.methodX() 

를 사용하는 것은 self.methodX() 문제를 해결하는 것 같다을 사용하여, 앞서 언급 된 바와 같이 methodY()

관련 문제