https://blog.csdn.net/weixin_45655710?type=blog
作业
题目1: 定义圆 (Circle) 类
要求:
- 包含属性:半径 radius.
2.包含方法:
● calculate area(): 计算圆的面积(公式:πr²).
● calculate circumference(): 计算圆的周长(公式:2πr).
3.初始化时需传入半径,默认值为 1.
1 #示例运行
2 circle = Circle(5)
3 print(f"半径:{circle. radius}") #输出:半径:5
4 print(f"面积:{circle. calculate__area()}") # 输出:面积:78.54(保留两位小数)
5 print(f"周长:{circle. calculate circumference()}") # 输出:周长:31.42(保留两位小数)
题目2: 定义长方形 (Rectangle) 类 - 包含属性:长 length、宽 width.
2.包含方法:
calculate area(): 计算面积(公式:长×宽)。
● calculate perimeter(): 计算周长 (公式:2×(长+宽))。is square() 方法,判断是否为正方形(长==宽)。
3.初始化时需传入长和宽,默认值均为 1.
1 rect = Rectangle(4, 6)
2 print(f"长:{rect. length}, 宽:{rect. width}") # 输出:长:4,宽:6
3 print(f"面积:{rect. calculate area()}") #输出:面积:24
4 print(f"周长:{rect. calculate__perimeter()}") # 输出:周长:20
5 print(f"是否为正方形:{rect. is square() }") #输出:是否为正方形:False
6
7 square = Rectangle(5, 5)
8 print(f"是否为正方形:{square. is square() }") # 输出:是否为正方形:True
题目3:图形工厂
创建一个工厂函数 create shape(shape type, * args), 根据类型创建不同图形对象:图形工厂(函数或类)
shape type=" circle": 创建圆(参数:半径)。
shape type=" rectangle": 创建长方形(参数:长、宽)。
1 shapel = create shape(" circle", 5)
2 print(shapel. calculate__circumference()) # 输出:31.42
3
4 shape2= create__shape(" rectangle", 3, 4)
5 print(shape2. is square()) # 输出:False
面向对象编程是 Python 的灵魂。在机器学习中,无论是 Scikit-learn 的 Model 还是 PyTorch 的 nn.Module,本质上都是通过"类"来封装属性(如模型参数)和方法(如训练、预测)。
题目 1:定义圆 (Circle) 类
核心知识点 :__init__ 初始化方法、self 关键字(指向实例本身)。
python
import math
class Circle:
def __init__(self, radius=1):
# 属性:半径
self.radius = radius
def calculate_area(self):
# 面积:πr²
return round(math.pi * self.radius ** 2, 2)
def calculate_circumference(self):
# 周长:2πr
return round(2 * math.pi * self.radius, 2)
# 示例运行
circle = Circle(5)
print(f"半径:{circle.radius}")
print(f"面积:{circle.calculate_area()}")
print(f"周长:{circle.calculate_circumference()}")
题目 2:定义长方形 (Rectangle) 类
核心知识点:多属性初始化、逻辑判断方法。
python
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
# 示例运行
rect = Rectangle(4, 6)
print(f"长:{rect.length}, 宽:{rect.width}")
print(f"面积:{rect.calculate_area()}")
print(f"周长:{rect.calculate_perimeter()}")
print(f"是否为正方形:{rect.is_square()}")
square = Rectangle(5, 5)
print(f"是否为正方形:{square.is_square()}")
题目 3:图形工厂
核心知识点:工厂模式(Factory Pattern)的思想。通过一个统一的入口,根据传入的参数动态地创建不同的对象。
python
def create_shape(shape_type, *args):
"""
图形工厂函数
*args 用于接收不定数量的位置参数,并传递给类的初始化方法
"""
if shape_type.lower() == "circle":
# 如果是圆,args[0] 通常是半径
return Circle(*args)
elif shape_type.lower() == "rectangle":
# 如果是长方形,args 包含长和宽
return Rectangle(*args)
else:
raise ValueError("暂不支持该图形类型")
# 示例运行
shape1 = create_shape("circle", 5)
print(f"圆周长:{shape1.calculate_circumference()}")
shape2 = create_shape("rectangle", 3, 4)
print(f"是否为正方形:{shape2.is_square()}")
💡 深度梳理:为什么我们要用类(Class)?
在之前的学习中,我们处理数据通常是用变量和函数。随着项目复杂度增加,你会发现:
- 封装性 :类把数据(属性)和处理数据的方法"捆绑"在一起。比如
Circle对象自己知道自己的半径,也知道怎么算面积,不需要你每次都手动传半径给一个外部函数。 - 抽象化 :在工厂函数中,我们只需要关心"我想要一个什么形状",而不需要在主逻辑里去写复杂的
__init__初始化过程。这极大简化了代码的调用逻辑。
在接下来的机器学习实践中,你会发现 Pipeline 实际上就是一个巨大的类,它内部封装了各种 Transformer(也是类)和 Estimator(还是类),这种结构化的思维是处理大型项目的基石。加油!