news 2026/7/22 16:47:42

DAY32 类的定义与方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DAY32 类的定义与方法

前言:在上一小节中,我们已经完成了有关函数装饰器概念以及用法的描述,今天我们将引入面向对象编程过程中一个十分重要的概念----类,类是创建对象的模板,定义了对象的属性(数据)和方法(功能)。

示例练习:

题目一:定义圆(Circle)类

要求:
1.包含属性:半径radius。
2.包含方法:
(1)calculate_area():计算圆的面积(公式:r2)。
(2)calculate_circumference():计算圆的周长(公式:2r)。
3.初始化时需传入半径,默认值为1。

示例代码:

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 # 创建半径为 3 的圆 c1 = Circle(3) print(c1.calculate_area()) # 输出面积 print(c1.calculate_circumference()) # 输出周长 # 使用默认半径 1 c2 = Circle() print(c2.calculate_area()) # 输出 π

题目2:定义长方形(Rectangle)类

1.包含属性:长length、宽width。
2.包含方法:
calculate_area():计算面积(公式:长x宽)。
calculate_perimeter():计算周长(公式:2x(长+宽))。 is_square()方法,判断是否为正方形(长==宽)。
3.初始化时需传入长和宽,默认值均为1。

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的长方形 rect1 = Rectangle(5, 3) print(rect1.calculate_area()) # 输出 15 print(rect1.calculate_perimeter()) # 输出 16 print(rect1.is_square()) # 输出 False # 使用默认值(长=1,宽=1) rect2 = Rectangle() print(rect2.is_square()) # 输出 True # 创建一个正方形(长=4,宽=4) square = Rectangle(4, 4) print(square.is_square()) # 输出 True

题目3:图形工厂

创建一个工厂函数create_shape(shape_type,*args),根据类型创建不同图形对象:图形工厂(函数或类)
shape_type="circle":创建圆(参数:半径)。
shape_type="rectangle":创建长方形(参数:长、宽)。

示例代码:

import math class Circle: def __init__(self, radius): self.radius = radius def calculate_area(self): return math.pi * self.radius ** 2 def __str__(self): return f"Circle(radius={self.radius})" class Rectangle: def __init__(self, length, width): self.length = length self.width = width def calculate_area(self): return self.length * self.width def __str__(self): return f"Rectangle(length={self.length}, width={self.width})" def create_shape(shape_type, *args): if shape_type == "circle": # 参数:半径 if len(args) != 1: raise ValueError("Circle requires exactly 1 argument: radius") return Circle(args[0]) elif shape_type == "rectangle": # 参数:长、宽 if len(args) != 2: raise ValueError("Rectangle requires exactly 2 arguments: length, width") return Rectangle(args[0], args[1]) else: raise ValueError(f"Unknown shape type: {shape_type}") circle = create_shape("circle", 5) print(circle) # Circle(radius=5) print("Area:", circle.calculate_area()) # 面积 # 创建长方形 rectangle = create_shape("rectangle", 4, 6) print(rectangle) # Rectangle(length=4, width=6) print("Area:", rectangle.calculate_area()) # 面积

注意:raise是 Python 中的抛出异常的语法,用于在程序执行过程中主动引发错误。

@浙大疏锦行

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 6:12:53

大数据挖掘中的模型漂移检测技术

当AI模型“变心”:大数据挖掘中模型漂移的检测与应对 关键词 模型漂移、概念漂移、数据漂移、在线漂移检测、ADWIN算法、Evidently AI、在线学习 摘要 你有没有过这样的经历?明明去年还很准的推荐系统,今年却总给你推过时的商品;明明训练时准确率95%的欺诈检测模型,上…

作者头像 李华
网站建设 2026/7/22 6:12:51

PyTorch-CUDA-v2.6镜像运行目标检测模型YOLOv8性能对比

PyTorch-CUDA-v2.6镜像运行目标检测模型YOLOv8性能对比 在当今智能视觉应用爆炸式增长的背景下,如何快速、稳定地部署高性能目标检测系统,已成为算法工程师和研发团队面临的核心挑战。从自动驾驶车辆识别行人,到工厂流水线上的缺陷检测&#…

作者头像 李华
网站建设 2026/7/22 6:12:49

cc2530无线丢包问题的协议层解决方案

用协议层“软实力”驯服 CC2530 的无线丢包顽疾你有没有遇到过这样的场景:精心部署的 Zigbee 传感器网络,突然在关键时刻掉链子——控制指令发不出去,温湿度数据莫名其妙丢失。排查半天,发现不是天线没焊好,也不是电源…

作者头像 李华
网站建设 2026/7/22 6:12:46

如何导出PyTorch-CUDA-v2.6镜像用于私有部署?操作命令分享

如何导出 PyTorch-CUDA-v2.6 镜像用于私有部署?实战命令详解 在当前深度学习项目频繁落地企业内网、边缘设备和离线环境的背景下,如何将一个已经验证过的 GPU 开发环境安全、完整地迁移到目标服务器,成为许多 AI 工程师面临的实际挑战。我们…

作者头像 李华
网站建设 2026/7/22 6:12:41

PyTorch-CUDA-v2.6镜像中使用nvidia-smi监控GPU状态

在 PyTorch-CUDA-v2.6 镜像中使用 nvidia-smi 监控 GPU 状态 你有没有遇到过这样的情况:启动了一个深度学习训练任务,满怀期待地等待模型飞速收敛,结果却发现 GPU 利用率只有 10%,显存占用也不高——明明硬件资源就在眼前&#xf…

作者头像 李华
网站建设 2026/7/22 6:12:33

KiCad原理图打印设置完整示例:精准布局输出技巧

如何把 KiCad 原理图打印得既专业又清晰?实战配置全解析你有没有遇到过这种情况:花了几小时画完一张复杂的原理图,信心满满地点击“打印”,结果输出的图纸要么内容被裁掉一半,要么字体小得要用放大镜看,电源…

作者头像 李华