news 2026/4/16 12:22:12

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/4/16 11:03:36

CentOS环境下Packet Tracer下载安装实战

在 CentOS 上成功部署 Packet Tracer:从零开始的实战指南 你有没有遇到过这种情况?明明是学网络工程的学生或讲师,却因为操作系统限制,无法在自己的 Linux 环境中使用思科官方推荐的教学工具—— Packet Tracer 。尤其当你手头…

作者头像 李华
网站建设 2026/4/16 6:15:34

UDS 31服务ECU实现原理:深度剖析与流程解析

UDS 31服务ECU实现深度解析:从协议到实战的完整闭环你有没有遇到过这样的场景?产线测试时,需要对ECU的Flash进行耐久性写入验证;售后排查中,想远程触发某个传感器的自检流程;安全标定时,必须激活…

作者头像 李华
网站建设 2026/4/16 12:17:17

PyTorch-CUDA-v2.6镜像与VS Code Remote-SSH协作开发指南

PyTorch-CUDA-v2.6 镜像与 VS Code Remote-SSH 协作开发实战 在深度学习项目中,你是否经历过这样的场景:好不容易写完模型代码,一运行却报错 CUDA not available?或者同事跑通的训练脚本,在你的环境里因为 PyTorch 版本…

作者头像 李华
网站建设 2026/4/16 10:39:26

【CMake】`set()` 命令详解

set() 是 CMake 中最基本、最常用的命令之一&#xff0c;用于设置、修改或取消设置变量。理解 set() 的用法是掌握 CMake 的关键。 基本语法 1. 设置普通变量 set(<variable> <value>... [PARENT_SCOPE])2. 设置缓存变量 set(<variable> <value>... CA…

作者头像 李华
网站建设 2026/4/16 10:41:01

PyTorch-CUDA-v2.6镜像中的CUDA版本是多少?是否支持最新驱动?

PyTorch-CUDA-v2.6镜像中的CUDA版本是多少&#xff1f;是否支持最新驱动&#xff1f; 在深度学习工程实践中&#xff0c;一个稳定、兼容且开箱即用的开发环境往往是项目成败的关键。尤其是在使用 GPU 加速训练时&#xff0c;Python 版本、PyTorch 编译方式、CUDA 工具包与显卡驱…

作者头像 李华
网站建设 2026/4/15 0:08:12

PyTorch-CUDA-v2.6镜像助力自然语言处理任务提速

PyTorch-CUDA-v2.6镜像助力自然语言处理任务提速 在自然语言处理的实践中&#xff0c;一个常见的场景是&#xff1a;研究者刚刚复现了一篇顶会论文的模型结构&#xff0c;满心期待地启动训练&#xff0c;结果发现单个 epoch 就要跑十几个小时——只因为忘了把模型搬到 GPU 上。…

作者头像 李华