Day28
一、定义圆类
import math
class Circle:
def __init__(self, radius=1):
self.radius = radius
def calculate_area(self):
return math.pi * (self.radius ** 2)
def calculate_circumference(self):
return 2 * math.pi * self.radius
# 创建半径为 5 的圆
circle = Circle(5)
# 计算并打印面积和周长
print(f"圆的面积: {circle.calculate_area()}")
print(f"圆的周长: {circle.calculate_circumference()}")
圆的面积: 78.53981633974483
圆的周长: 31.41592653589793
二、定义长方形类
class Rectangle:
def __init__(self, length=1, width=1):
self.length = length
self.width = width
def calculate_area(self):
return self.length * self.width
def calculate_perimeter(self):
return 2 * (self.length + self.width)
def is_square(self):
return self.length == self.width
# 创建长为 5,宽为 3 的长方形
rect = Rectangle(5, 3)
# 计算并打印面积和周长
print(f"长方形的面积: {rect.calculate_area()}")
print(f"长方形的周长: {rect.calculate_perimeter()}")
print(f"是否为正方形: {rect.is_square()}")
# 创建边长为 4 的正方形
square = Rectangle(4, 4)
print(f"正方形是否为正方形: {square.is_square()}")
长方形的面积: 15
长方形的周长: 16
是否为正方形: False
正方形是否为正方形: True
三、图形工厂
from typing import Union
class Circle:
def __init__(self, radius=1):
self.radius = radius
def calculate_area(self):
return 3.14 * self.radius ** 2
def calculate_circumference(self):
return 2 * 3.14 * self.radius
class Rectangle:
def __init__(self, length=1, width=1):
self.length = length
self.width = width
def calculate_area(self):
return self.length * self.width
def calculate_perimeter(self):
return 2 * (self.length + self.width)
def is_square(self):
return self.length == self.width
def create_shape(shape_type: str, *args) -> Union[Circle, Rectangle]:
if shape_type == "circle":
return Circle(*args)
elif shape_type == "rectangle":
return Rectangle(*args)
else:
raise ValueError(f"Unsupported shape type: {shape_type}")
# 创建半径为 5 的圆
circle = create_shape("circle", 5)
print(f"圆面积: {circle.calculate_area()}")
# 创建长 4、宽 3 的长方形
rectangle = create_shape("rectangle", 4, 3)
print(f"长方形周长: {rectangle.calculate_perimeter()}")
# 创建正方形(特殊长方形)
square = create_shape("rectangle", 5, 5)
print(f"是否为正方形: {square.is_square()}")
# 错误示例(会抛出异常)
# create_shape("triangle", 3, 4, 5)
圆面积: 78.5
长方形周长: 14
是否为正方形: True