三个形状,一句话算完
三个形状:长方形 3×4、正方形边长 5、三角形底 6 高 5。三个类各自实现 area,调用方一句类型判断都没有:
class Shape:
"""只承诺一件事:能算面积"""
def area(self):
raise NotImplementedError
def name(self):
raise NotImplementedError
class Rect(Shape):
def __init__(self, w, h):
self.w, self.h = w, h
def area(self):
return self.w * self.h
def name(self):
return "长方形"
class Square(Shape):
def __init__(self, s):
self.s = s
def area(self):
return self.s ** 2
def name(self):
return "正方形"
class Tri(Shape):
def __init__(self, b, h):
self.b, self.h = b, h
def area(self):
return self.b * self.h // 2
def name(self):
return "三角形"
SHAPES = [Rect(3, 4), Square(5), Tri(6, 5)]
print("/".join(str(s.area()) for s in SHAPES))
全部评论