Функция вызова Python в классе - PullRequest
183 голосов
/ 11 апреля 2011

У меня есть этот код, который рассчитывает расстояние между двумя координатами.Обе функции находятся в одном классе.

Однако как мне вызвать функцию distToPoint в функции 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)
        ...

Ответы [ 2 ]

318 голосов
/ 11 апреля 2011

Так как это функции-члены, вызовите его как функцию-член в экземпляре, self.

def isNear(self, p):
    self.distToPoint(p)
    ...
37 голосов
/ 11 апреля 2011

Это не работает, потому что distToPoint находится внутри вашего класса, поэтому вам нужно добавить префикс к имени класса, если вы хотите сослаться на него, например: classname.distToPoint(self, p). Вы не должны делать это так, хотя. Лучший способ сделать это - обратиться к методу напрямую через экземпляр класса (который является первым аргументом метода класса), например: self.distToPoint(p).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...