Fonction d'appel Python dans la classe

, j'ai ce code qui calcule la distance entre deux coordonnées. Les deux fonctions sont toutes deux dans la même classe.

Cependant comment puis-je faire appel à 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)
        ...
140
demandé sur Aran-Fey 2011-04-11 04:20:07

2 réponses

Puisque ce sont des fonctions membres, appelez-la en tant que fonction membre sur l'instance, self.

def isNear(self, p):
    self.distToPoint(p)
    ...
256
répondu Jeff Mercado 2011-04-11 00:24:42

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

32
répondu Aleksi Torhamo 2011-04-11 00:31:52