2011-04-11 12 views
121

Tengo este código que calcula la distancia entre dos coordenadas. Las dos funciones están ambas dentro de la misma clase.Función de llamada Python dentro de la clase

Sin embargo, ¿cómo puedo llamar a la función distToPoint en la función isNear?

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

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

intento: self.distToPoint (p) – momeara

Respuesta

220

Dado que se trata de funciones miembro, llámelo como una función miembro en la instancia, self.

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

Pero tenga cuidado self.foo() utilizará el orden de resolución de métodos que pueden resolver a una función en una clase diferente. –

+0

¿Qué sucede si no usamos uno mismo? y llamar directamente a distToPoint (p)? –

+0

@Marlon Abeykoon faltará el argumento de "sí mismo" –

25

Eso no funciona porque distToPoint está dentro de su clase, por lo que necesita el prefijo con el nombre de clase, si se desea hacer referencia a ella, como esto: classname.distToPoint(self, p). Sin embargo, no deberías hacerlo así. Una mejor manera de hacerlo es consultar el método directamente a través de la instancia de la clase (que es el primer argumento de un método de clase), así: self.distToPoint(p).

Cuestiones relacionadas