web-dev-qa-db-ja.com

クラス内のPython呼び出し関数

2つの座標間の距離を計算するこのコードがあります。 2つの関数はどちらも同じクラス内にあります。

しかし、関数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)
        ...
181
Steven

これらはメンバー関数なので、インスタンスselfのメンバー関数として呼び出します。

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

distToPointはあなたのクラスの中にあるのでそれはうまくいきません、それであなたがそれを参照したいならば、あなたはそれをクラス名で接頭辞をつける必要があります:classname.distToPoint(self, p)。あなたはそうするべきではありません、しかし。それを行うより良い方法は、self.distToPoint(p)のように、クラスインスタンスを通して直接メソッドを参照することです(これはクラスメソッドの最初の引数です)。

36
Aleksi Torhamo