当前位置: 首页 > news >正文

day28/60

@浙大疏锦行

DAY 28 类的定义和方法

PS:每天的内容都有示例代码的,在gitee主页 不是只有讲义的几句话,,不会还有人不知道吧

知识点回顾:

  1. 类的定义
  2. pass占位语句
  3. 类的初始化方法
  4. 类的普通方法
  5. 类的继承:属性的继承、方法的继承

作业

题目1:定义圆(Circle)类

要求:

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

# 示例运行
circle = Circle(5)
print(f"半径:{circle.radius}")       # 输出:半径:5
print(f"面积:{circle.calculate_area()}")   # 输出:面积:78.54(保留两位小数)
print(f"周长:{circle.calculate_circumference()}") # 输出:周长:31.42(保留两位小数)

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

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

rect = Rectangle(4, 6)
print(f"长:{rect.length}, 宽:{rect.width}")  # 输出:长:4, 宽:6
print(f"面积:{rect.calculate_area()}")      # 输出:面积:24
print(f"周长:{rect.calculate_perimeter()}")  # 输出:周长:20
print(f"是否为正方形:{rect.is_square()}")    # 输出:是否为正方形:Falsesquare = Rectangle(5, 5)
print(f"是否为正方形:{square.is_square()}")  # 输出:是否为正方形:True

题目3:图形工厂

创建一个工厂函数 create_shape(shape_type, *args),根据类型创建不同图形对象:图形工厂(函数或类)

shape_type="circle":创建圆(参数:半径)。

shape_type="rectangle":创建长方形(参数:长、宽)。

shape1 = create_shape("circle", 5)
print(shape1.calculate_circumference())  # 输出:31.42shape2 = create_shape("rectangle", 3, 4)
print(shape2.is_square())                # 输出:False

豆包:

好的!我会用生活中的例子来比喻这几个面向对象编程的核心概念,让它们更容易理解~

1. 类的定义

知识点解释
类是一种抽象的模板,定义了对象的属性(特征)和方法(行为)。通过类可以创建多个具有相同结构的实例对象

 

比喻
就像制作饼干的模具:

 
  • 模具(类)决定了饼干(对象)的形状(属性)和用途(方法),
  • 用同一个模具可以做出很多块饼干(实例化多个对象),
  • 每块饼干都有相同的基本特征(如圆形、巧克力味),但可以独立存在和使用。
 

代码示例

 

python

class Cookie:  # 定义一个饼干类shape = "圆形"  # 类属性:所有饼干的形状flavor = "巧克力"  # 类属性:所有饼干的口味def eat(self):  # 类方法:描述饼干的行为print(f"吃掉了一块{self.shape}的{self.flavor}饼干!")# 创建两个饼干实例
cookie1 = Cookie()
cookie2 = Cookie()cookie1.eat()  # 输出:吃掉了一块圆形的巧克力饼干!

2. pass 占位语句

知识点解释
pass是一个空语句,用于占位,让代码结构完整但暂时不执行任何操作。常见于类或函数定义中,当你还没想好具体实现时使用。

 

比喻
就像给房子设计蓝图:

 
  • 你在图纸上标记了 “这里将来要放一个沙发”(定义了一个方法或类),
  • 但现在还没决定买什么样的沙发(还没写具体代码),
  • 先用pass占个位,确保图纸(代码结构)不会报错。
 

代码示例

 

python

class FutureHouse:  # 定义一个未来的房子类def living_room(self):  # 计划在客厅放沙发pass  # 占位,以后再实现具体功能def kitchen(self):  # 计划设计厨房# 这里先写一些代码print("这是厨房的基本结构")pass  # 占位,后续添加更多功能

3. 类的初始化方法(__init__

知识点解释
__init__是类的构造函数,在创建对象时自动调用,用于初始化对象的实例属性(每个对象独有的特征)。

 

比喻
就像定制手机壳:

 
  • 手机壳工厂(类)有一个标准化流程(__init__方法),
  • 顾客(创建对象时)可以选择图案、材质等个性化参数,
  • 工厂根据这些参数生产出独一无二的手机壳(对象)。
 

代码示例

 

python

class PhoneCase:def __init__(self, pattern, material):  # 初始化方法,接收个性化参数self.pattern = pattern  # 实例属性:图案self.material = material  # 实例属性:材质def describe(self):print(f"这是一个{self.material}材质、印有{self.pattern}图案的手机壳。")# 创建两个不同的手机壳
case1 = PhoneCase("星空", "硅胶")  # 自动调用__init__,传入参数
case2 = PhoneCase("猫咪", "塑料")case1.describe()  # 输出:这是一个硅胶材质、印有星空图案的手机壳。
case2.describe()  # 输出:这是一个塑料材质、印有猫咪图案的手机壳。

4. 类的普通方法

知识点解释
类的方法是定义在类中的函数,用于描述对象的行为。方法的第一个参数通常是self,指向调用该方法的对象本身。

 

比喻
就像汽车的功能:

 
  • 汽车(对象)有 “启动”“加速”“刹车” 等功能(方法),
  • 每个功能都需要操作汽车自身的部件(访问对象的属性),
  • self就像是汽车的 “方向盘”,让方法知道操作的是哪辆车。
 

代码示例

 

python

class Car:def __init__(self, brand, color):self.brand = brandself.color = colorself.speed = 0  # 初始速度为0def start(self):  # 普通方法:启动汽车print(f"{self.color}的{self.brand}启动了!")self.speed = 10  # 修改对象的属性def accelerate(self):  # 普通方法:加速self.speed += 20print(f"加速!当前速度:{self.speed}km/h")my_car = Car("宝马", "白色")
my_car.start()  # 输出:白色的宝马启动了!
my_car.accelerate()  # 输出:加速!当前速度:30km/h

5. 类的继承:属性的继承、方法的继承

知识点解释
继承是指一个类(子类)可以继承另一个类(父类)的属性方法,从而复用代码并扩展功能。

 

比喻
就像家族传承:

 
  • 子女(子类)会继承父母(父类)的外貌特征(属性)和生活习惯(方法),
  • 同时子女也可以发展自己独特的爱好(新增属性或方法),
  • 甚至改进某些习惯(重写父类方法)。
 

代码示例

 

python

# 父类:动物
class Animal:def __init__(self, name):self.name = namedef eat(self):  # 父类方法print(f"{self.name}正在吃东西。")# 子类:狗(继承自Animal)
class Dog(Animal):  # 括号内写父类名称def __init__(self, name, breed):super().__init__(name)  # 调用父类的初始化方法self.breed = breed  # 子类新增属性def bark(self):  # 子类新增方法print(f"{self.name}({self.breed})在汪汪叫!")def eat(self):  # 重写父类方法print(f"{self.name}({self.breed})正在狼吞虎咽地吃东西!")# 创建子类实例
dog = Dog("旺财", "金毛")
dog.eat()  # 调用重写后的方法
dog.bark()  # 调用子类新增的方法

总结

  • 类的定义:像模具,定义对象的模板。
  • pass 占位:像蓝图上的空白标记,暂时不实现功能。
  • 初始化方法:像定制产品,创建对象时设置个性化属性。
  • 普通方法:像汽车功能,描述对象能做什么。
  • 继承:像家族传承,子类复用父类特性并发展自己的特性。
 

如果有任何地方没讲清楚,随时告诉我哦! 😊


代码:

import math# 题目1: 定义圆类
class Circle:def __init__(self, radius=1):self.radius = radiusdef calculate_area(self):return round(math.pi * self.radius ** 2, 2)def calculate_circumference(self):return round(2 * math.pi * self.radius, 2)# 题目2: 定义长方形类
class Rectangle:def __init__(self, length=1, width=1):self.length = lengthself.width = widthdef calculate_area(self):return self.length * self.widthdef calculate_perimeter(self):return 2 * (self.length + self.width)def is_square(self):return self.length == self.width# 题目3: 图形工厂函数
def create_shape(shape_type, *args):if shape_type == "circle":return Circle(*args)elif shape_type == "rectangle":return Rectangle(*args)else:raise ValueError("不支持的图形类型")# 测试代码
if __name__ == "__main__":# 测试圆类circle = Circle(5)print(f"半径:{circle.radius}")print(f"面积:{circle.calculate_area()}")print(f"周长:{circle.calculate_circumference()}")# 测试长方形类rect = Rectangle(4, 6)print(f"\n长:{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"\n是否为正方形:{square.is_square()}")# 测试图形工厂shape1 = create_shape("circle", 5)print(f"\n圆周长:{shape1.calculate_circumference()}")shape2 = create_shape("rectangle", 3, 4)print(f"是否为正方形:{shape2.is_square()}")

输出:

相关文章:

  • 1005. Maximize Sum Of Array After K Negations
  • 如何用python读取大的xml文件,示例为1.9G的xml文件
  • HarmonyOS - UIObserver(无感监听)
  • Windows 安装以及配置Docker全流程 - Docker Toolbox
  • vibe coding 2025工具全景图
  • python打卡day51@浙大疏锦行
  • 如何利用测试Agent自动分析覆盖率报告与缺陷趋势
  • “十五五”时期智慧城市赋能全国一体化数据市场建设:战略路径与政策建议[ 注:本建议基于公开政策文件与行业实践研究,数据引用截至2025年6月11日。]
  • 剑指offer21——反转链表
  • 力扣上C语言编程题:最大子数组和(涉及数组)
  • Qwen3-Embedding-8B:文本嵌入界的“卷王”,多语言检索新标杆!
  • 嵌入式学习笔记 - C语言访问地址的方式,以及指针的进一步理解
  • 简单的五子棋实现简介
  • 6.11本日总结
  • typescript中的泛型
  • 字符串|数组|计算常见函数整理-竞赛专用(从比赛真题中总结的,持续更新中)
  • 使用CSDN作为Markdown编辑器图床
  • 【Python-Day 25】玩转数字:精通 math 与 random 模块,从数学运算到随机抽样
  • 图文教程——Deepseek最强平替工具免费申请教程——国内edu邮箱可用
  • 亚马逊Woot黑五策略,快速提升亚马逊业绩
  • php做网站多少钱/廊坊seo整站优化软件
  • 网站做个seo要多少钱/新媒体营销案例分析
  • 用网址进入的游戏/关键词优化的原则
  • 网站ui设计基础/网站建设优化推广系统
  • 个人网站做捐赠发布违法吗/宁波公司做网站
  • 网站做跳转/网站优化怎么做