私は、基底と高さを__init__
引数とするクラスTriangle
をPythonで宣言しました。そして、area
は三角形の面積を計算して返します。 Triangle
クラスの__eq__
メソッドは、三角形の面積を比較し、値を返します。クラスは以下のように定義されます。__eq__メソッドは、==と>の両方の演算子に対してTrueを返します
class Shape(object):
def area(self):
raise AttributeException("Subclasses should override this method.")
class Triangle(Shape):
def __init__(self, base, height):
"""
base = base of the triangle.
height = height of the triangle
"""
self.base = base
self.height = height
def area(self):
return (self.base * self.height)/2
def __str__(self):
return 'Triangle with base ' + str(self.base) + ' and height ' + str(self.height)
def __eq__(self, other):
"""
Two triangles are equal if their area is equal
"""
return (self.area() == other.area())
今、私はプログラムを実行し、Triangle
t1
とt3
に2つのインスタンスを作成し、それらに異なる塩基と高さを与えたが、その面積は同じです。したがって、t1 == t3
はTrue
であり、True
として返されます。しかし、不思議なことに、も返されますが、それはなぜわかりませんか?True
?
>>> t1 = Triangle(3,4)
>>> t3 = Triangle(2, 6)
>>> t1.area()
6
>>> t3.area()
6
>>> t1 == t3
True
>>> t1 > t3
True
>>> t1 < t3
False
>>>
。 – L3viathan
どのように '__gt__'を実装しましたか? –
クラス全体を追加しました。その簡単な学習例は、私は__eq__を定義しました。 –