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

day28 python 类与继承

一、类的基本定义

类是对属性和方法的封装,可以理解为一个模板。通过对模板实例化,我们可以创建出具有相同属性和方法的对象。例如,我们可以定义一个 Teacher 类,然后通过实例化这个类来创建具体的教师对象。

1. 类的定义语法

定义一个类的基本语法如下:

class ClassName:# 类的代码块(可以包含属性定义、方法定义等)pass  # pass 是一个占位符,表示这里暂时没有任何内容

类名通常遵循大驼峰命名法(UpperCamelCase),即每个单词的首字母都大写。例如,TeacherRandomForest 等。

2. 初始化方法 __init__

初始化方法(也称为构造方法)是一个特殊的函数,用于在创建类的实例时初始化实例的属性。它的定义方式如下:

class Teacher:def __init__(self, name, age):self.name = name  # 使用 self 来定义类的属性self.age = ageself.subject = "English"  # 这个属性是固定的

__init__ 方法中,self 是一个指向类实例的引用,用于访问类的属性和方法。例如,self.name 表示当前实例的 name 属性。

3. 创建类的实例

通过类名后跟括号的方式,可以创建类的实例:

teacher = Teacher("Susan", 33)
print(teacher.name)  # 输出: Susan
print(teacher.age)   # 输出: 33
print(teacher.subject)  # 输出: English

二、类的普通方法

除了初始化方法,类还可以定义普通方法。普通方法是类的行为逻辑,只有在显式调用时才会执行。

示例:定义普通方法

class Teacher:def __init__(self, name, subject, age):self.name = nameself.subject = subjectself.age = agedef teach_lesson(self):print(f"{self.name}正在教{self.subject}。")def criticize(self, student_name):print(f"{self.name}正在批评{student_name}。")# 创建类的实例
teacher = Teacher("Susan", "English", 33)# 调用普通方法
teacher.teach_lesson()  # 输出: Susan正在教English。
teacher.criticize("John")  # 输出: Susan正在批评John。

三、类的继承

类的继承是面向对象编程的核心概念之一。通过继承,一个子类可以继承父类的属性和方法,从而实现代码复用和功能扩展。子类可以:

  • 复用父类的代码(无需重新实现)。

  • 重写父类的方法(修改或增强功能)。

  • 添加新的方法和属性(扩展功能)。

示例:继承与方法重写

假设我们有一个 Teacher 类,现在我们想定义一个 MasterTeacher 类,它继承自 Teacher 类,并添加一些新的功能。

class Teacher:def __init__(self, name, subject, age):self.name = nameself.subject = subjectself.age = agedef teach_lesson(self):print(f"{self.name}正在教{self.subject}。")def criticize(self, student_name):print(f"{self.name}正在批评{student_name}。")# 继承 Teacher 类
class MasterTeacher(Teacher):def __init__(self, name, subject, age, experience_years):super().__init__(name, subject, age)  # 调用父类的构造方法self.experience_years = experience_years  # 添加子类特有的属性# 重写父类的方法def teach_lesson(self):print(f"{self.name}(特级教师)正在用高级方法教授{self.subject}。")# 新增子类特有的方法def give_lecture(self, topic):print(f"{self.name}正在举办关于{topic}的讲座。")# 创建子类实例
master = MasterTeacher("王教授", "数学", 45, 20)# 调用继承的方法
master.teach_lesson()  # 输出: 王教授(特级教师)正在用高级方法教授数学。
master.criticize("李同学")  # 输出: 王教授正在批评李同学。# 调用子类特有的方法
master.give_lecture("微积分")  # 输出: 王教授正在举办关于微积分的讲座。

4. 使用 super() 调用父类方法

在子类中,可以通过 super() 函数调用父类的方法。这在重写父类方法时非常有用,可以保留父类的核心逻辑并在此基础上扩展。

class Animal:def __init__(self, name, age):self.name = nameself.age = agedef speak(self):print(f"{self.name} 发出声音")class Dog(Animal):def speak(self):super().speak()  # 调用父类的方法print("汪汪叫")  # 添加子类的行为dog = Dog("旺财", 3)
dog.speak()
# 输出:
# 旺财 发出声音
# 汪汪叫

四、总结

通过类和继承,我们可以实现代码的封装、复用和扩展。类的定义包括初始化方法和普通方法,而继承则允许子类继承父类的属性和方法,并通过方法重写和新增方法来扩展功能。

@浙大疏锦行

http://www.xdnf.cn/news/6990.html

相关文章:

  • EXO 可以将 Mac M4 和 Mac Air 连接起来,并通过 Ollama 运行 DeepSeek 模型
  • Ansible模块——服务管理和设置定时任务
  • 中药药效成分群的合成生物学研究进展-文献精读130
  • json schema校验json字符串(networknt/json-schema-validator)
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用类颜色QColor)
  • Java-反射(Reflection)
  • Power BI Desktop开发——矩阵相关操作
  • 智慧校园(含实验室)智能化专项汇报方案
  • 精益数据分析(64/126):移情阶段的用户触达策略——从社交平台到精准访谈
  • 在Solana上使用 Scaled UI Amount 扩展
  • 机器学习回归预测中预处理的特征工程
  • 如何根据竞价数据判断竞价强度,是否抢筹等
  • 从零开始:使用 PyTorch 构建深度学习网络
  • WebXR教学 09 项目7 使用python从0搭建一个简易个人博客
  • BiliTools v1.3.7 哔哩哔哩工具箱
  • chrome 浏览器插件 myTools, 日常小工具。
  • FreeCAD源码分析: Transaction实现原理
  • 基于51单片机温控风扇—PWM调速、2挡、数码管显示
  • TCP/UDP协议原理和区别 笔记
  • Postman遇到脚本不支持replaceIn函数
  • Cookie、Session、Token
  • 自定义类、元组、字典和结构体对比——AutoCAD C# 开发中建立不同对象之间的联系
  • 灵光一现的问题和常见错误2
  • C语言:在 Win 10 上,g++ 如何编译 gtk 应用程序
  • Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析
  • cursor/vscode启动项目connect ETIMEDOUT 127.0.0.1:xx
  • 鸿蒙ArkUI体验:Hexo博客客户端开发心得
  • JVM 调优实战入门:从 GC 日志分析到参数调优
  • 基于requests_html的python爬虫
  • Redis——缓存雪崩、击穿、穿透