2011-04-11 12 views
121

두 좌표 사이의 거리를 계산하는 코드가 있습니다. 두 함수는 모두 같은 클래스 내에 있습니다.클래스 내의 파이썬 호출 함수

그러나 함수 distToPoint을 함수 isNear에 어떻게 호출합니까?

def distToPoint(self, p): 
    """ 
    Use pythagoras to find distance 
    (a^2 = b^2 + c^2) 
    """ 
    ... 

def isNear(self, p): 
    distToPoint(self, p) 
    ... 
+19

시도 : self.distToPoint (P) – momeara

답변

220

이들은 멤버 함수이므로 인스턴스의 멤버 함수로 호출하십시오 (self).

def isNear(self, p): 
    self.distToPoint(p) 
    ... 
+1

그러나 수주의 self.foo()는 다른 클래스의 함수로 해결할 수있는 방법을 확인 순서를 사용합니다. –

+0

자기를 사용하지 않으면 어떻게됩니까? distToPoint (p)를 직접 호출할까요? –

+0

@ Marlin Abeykoon "self"인수가 누락 됨 –

25

distToPoint는 클래스 내부에 있기 때문에 작동하지 않습니다, 그래서 당신은 다음과 같이 그것을 참조 할 경우 클래스 이름으로 접두사해야합니다 classname.distToPoint(self, p)합니다. 그래도 그런 식으로해서는 안됩니다. 더 좋은 방법은 클래스 메소드의 첫 번째 인수 인 클래스 인스턴스를 직접 참조하는 것입니다 (예 : self.distToPoint(p)).

관련 문제