web-dev-qa-db-fra.com

Python fonction d'appel dans la classe

J'ai ce code qui calcule la distance entre deux coordonnées. Les deux fonctions appartiennent à la même classe.

Cependant, comment appeler la fonction distToPoint dans la fonction isNear?

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

    def isNear(self, p):
        distToPoint(self, p)
        ...
187
Steven

S'agissant de fonctions membres, appelez-la en tant que fonction membre sur l'instance, self.

def isNear(self, p):
    self.distToPoint(p)
    ...
325
Jeff Mercado

Cela ne fonctionne pas parce que distToPoint est dans votre classe, vous devez donc le préfixer avec le nom de la classe si vous voulez vous y référer, comme ceci: classname.distToPoint(self, p). Vous ne devriez pas le faire comme ça, cependant. Une meilleure façon de le faire est de faire référence à la méthode directement via l'instance de la classe (qui est le premier argument d'une méthode de classe), comme suit: self.distToPoint(p).

37
Aleksi Torhamo