属性を変更してクラス属性にしたときに壊れたコードがあります。その理由を知りたいです。
だから、私はから始めました
def linInterp(x1, x2, y1, y2, x):
return y1 + (x - x1) * (y2 - y1) / (x2 - x1)
class Inter1DLineal(object):
def __init__(self):
self.interpSegment = linInterp
if __name__ == "__main__":
inter = Inter1DLineal()
print(inter.interpSegment(0.2, 0.6, 0, 1, 0.4))
これは問題なく動作します。たとえば、interpSegment
の適切なメソッドとして実装できることはわかっています。Inter1DLineal
@classmethod
def interpSegment(cls, *args, **kwargs):
return linInterp(*args, **kwargs)
しかし、タイプ関数の属性で大丈夫だと思いました。
私が驚いたのは、次に起こったことです。interpSegment
はすべてのインスタンスに共通であるため、クラス属性にする必要があると判断しました。
def linInterp(x1, x2, y1, y2, x):
return y1 + (x - x1) * (y2 - y1) / (x2 - x1)
class Inter1DLineal(object):
interpSegment = linInterp
def __init__(self):
pass
if __name__ == "__main__":
inter = Inter1DLineal()
print(inter.interpSegment(0.2, 0.6, 0, 1, 0.4))
しかし、これはコードを壊しました。への呼び出しがinterpSegment
5 ではなく 6 つの属性を渡すようになったようです。誰かがなぜこれが起こるのか説明できますか? これを行うための最も Pythonistic な方法は何でしょうか?