下面是一种可行的类的设计方式:
class Shape:
def __init__(self, width):
self.width = width
def get_area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
super().__init__(width)
self.height = height
def get_area(self):
return self.width * self.height
def get_perimeter(self):
return 2 * (self.width + self.height)
class Circle(Shape):
def __init__(self, width):
super().__init__(width)
def get_area(self):
return 3.14 * (self.width / 2) ** 2
def get_perimeter(self):
return 2 * 3.14 * (self.width / 2)
这是一种基础的类设计方式。这些类中,Shape
是基础类,而 Rectangle
和 Circle
则是派生类。基础类中,包含了所有图形共有的属性,即宽度。同时,还有一个 get_area()
方法,它在基础类中是空的,在派生类中需要被重写。
而在派生类中,则有额外的属性,如 Rectangle
类中的高度,以及额外的方法,如 Rectangle
类中的 get_perimeter()
和 Circle
类中的 get_perimeter()
。
接下来是一个测试主函数的例子:
def main():
r = Rectangle(4, 5)
print(f'矩形的面积为 {r.get_area()}')
print(f'矩形的周长为 {r.get_perimeter()}')
c = Circle(4)
print(f'圆的面积为 {c.get_area()}')
print(f'圆的周长为 {c.get_perimeter()}')
if __name__ == '__main__':
main()
运行后的输出应该如下