news 2026/3/10 4:26:27

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/3/4 8:22:54

PyTorch-CUDA-v2.6镜像中使用Git管理机器学习代码的最佳实践

PyTorch-CUDA-v2.6 镜像中使用 Git 管理机器学习代码的最佳实践 在深度学习项目开发中,我们常常会遇到这样的场景:一个模型昨天还能跑出 95% 的准确率,今天却再也复现不了;团队成员提交的代码互相覆盖,导致关键功能丢…

作者头像 李华
网站建设 2026/3/4 0:31:11

通过GNU Radio可视化界面控制SDR硬件通俗解释

用鼠标“画”出一台收音机:GNU Radio 是如何让普通人玩转 SDR 的?你有没有想过,只靠一台几十块钱的 USB 接收器和一个图形界面软件,就能监听 FM 广播、接收飞机ADS-B信号、甚至解码气象卫星图像?这背后的核心技术&…

作者头像 李华
网站建设 2026/3/6 19:43:21

蜂鸣器在工业报警中的应用:核心要点解析

蜂鸣器在工业报警中的应用:从原理到实战的深度拆解你有没有遇到过这样的场景?一台设备突然停机,操作屏上没有任何提示,而旁边的同事却说:“刚才好像听见‘嘀’了一声?”——这正是蜂鸣器在关键时刻发出的求…

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

PyTorch-CUDA-v2.6镜像发布:专为大模型token生成优化的GPU环境

PyTorch-CUDA-v2.6镜像发布:专为大模型token生成优化的GPU环境 在大模型推理日益成为AI产品核心能力的今天,一个常见却令人头疼的问题是:为什么同样的模型,在不同机器上跑出来的速度差了三倍?更别提那些因驱动版本不匹…

作者头像 李华
网站建设 2026/3/5 16:23:29

PyTorch-CUDA-v2.6镜像如何实现多卡并行训练?技术细节曝光

PyTorch-CUDA-v2.6镜像如何实现多卡并行训练?技术细节曝光 在当前大模型时代,单张GPU已经远远无法满足训练效率的需求。从BERT到LLaMA,模型参数动辄数十亿甚至上千亿,训练任务对算力的渴求达到了前所未有的高度。面对这一挑战&…

作者头像 李华
网站建设 2026/3/9 15:42:35

Docker快速搭建Elasticsearch安装环境通俗解释

用 Docker 几分钟搭起 Elasticsearch,新手也能轻松上手 你有没有遇到过这种情况:想试试 Elasticsearch 的全文检索功能,刚打开官网准备安装,就看到一堆 JVM 参数、系统内核调优、YAML 配置文件……还没开始写代码,光是…

作者头像 李华