クラスメソッドに問題があります。私は持っているすべての情報を投稿します。私は与えられた質問に関連する方法を書く必要があります。クラスメソッドの問題 - Python
import math
epsilon = 0.000001
class Point(object):
def __init__(self, x, y):
self._x = x
self._y = y
def __repr__(self):
return "Point({0}, {1})".format(self._x, self._y)
最初の質問; disttopointというメソッドを追加する必要があります。このメソッドは、引数として別のポイントオブジェクトpをとり、2つのポイント間のユークリッド距離を返します。私はmath.sqrtを使うことができます。
テストケース:
abc = Point(1,2)
efg = Point(3,4)
abc.disttopoint(efg) ===> 2.8284271
2番目の質問。別のポイントオブジェクトpを引数とするisnearというメソッドを追加し、このポイントとpの間の距離がε(上記のクラススケルトンで定義されている)未満であればTrueを返し、それ以外の場合はFalseを返します。 disttopointを使用してください。
テストケース:
abc = Point(1,2)
efg = Point(1.00000000001, 2.0000000001)
abc.isnear(efg) ===> True
3番目の質問。 addpointというメソッドを追加します。addpointは、別のポイントオブジェクトpを引数としてとり、このポイントをointの古い値とpの値の合計になるように変更します。
テストケース;
abc = Point(1,2)
efg = Point(3,4)
abc.add_point(bar)
repr(abc) ==> "Point(4,6)
どうすればいいですか? –
あなたはいくつかのPythonの魔法を追加することができます: 'add_point'(またはそれと同様の)メソッドを持つ代わりに' __iadd__'を使うことができます。 'abc + = bar'を実行します。必要に応じて他の演算子についても繰り返します(すべてのドキュメントについては、ドキュメントを参照してください) –