假设我有一门课,如下所示:
import math
class RegularPolygon(object):
def __init__(self, num_sides, side_len):
self._num_sides = num_sides
self._side_len = side_len
def perimeter(self):
return self._num_sides * self._side_len
def apothem(self):
return self._side_len / (2. * math.tan(math.pi / self._num_sides))
def area(self):
return self.perimeter() * self.apothem() / 2.
这让我可以定义以下几个对象:
unit_square = RegularPolygon(4, 1)
unit_pentagon = RegularPolygon(5, 1)
unit_octagon = RegularPolygon(8, 1)
我想要的是能够使用任何标准的数学运算(比如至少+
、-
、*
、/
和**
)组合这个类的对象。我希望任何此类组合的结果都是一个对象,其方法将返回对组成对象调用的方法的结果执行的计算
例如,如果我写下:
a_pair_of_squares = unit_square + unit_square
我希望它是某种PolygonCollection
对象。我想要
a_pair_of_squares.area()
归来
unit_square.area() + unit_square.area()
同样,如果我定义
a_shape_mashup = (unit_square + (2 * unit_pentagon)) / unit_octagon
我想要
a_shape_mashup.perimeter()
归来
(unit_square.perimeter() + (2 * unit_pentagon.perimeter())) / unit_octagon.perimeter()
及
a_shape_mashup.area()
应该回来
(unit_square.area() + (2 * unit_pentagon.area())) / unit_octagon.area()
这可能吗?最好的方法是什么
目前没有回答
相关问题 更多 >
编程相关推荐