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

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()
# 输出:
# 旺财 发出声音
# 汪汪叫

四、总结

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

@浙大疏锦行

相关文章:

  • 使用Spring Boot与Spring Security构建安全的RESTful API
  • 二叉树的中序遍历 递归调用的完整展开
  • 完整卸载 Fabric Manager 的方法
  • Python海龟绘图(Turtle Graphics)核心函数和关键要点
  • W5500使用ioLibrary库创建DHCP客户端
  • 生产者 - 消费者模式实现方法整理
  • python + streamlink 下载 vimeo 短视频
  • 【Element UI】表单及其验证规则详细
  • DAY 23 训练
  • Python 3.11详细安装步骤(包含安装包)Python 3.11详细图文安装教程
  • Python 基础之函数命名
  • Nginx应用场景详解与配置指南
  • 【时时三省】(C语言基础)字符数组应用举例2
  • DeepSeek-R1 Supervised finetuning and reinforcement learning (SFT + RL)
  • MATLAB安装常见问题及解决办法
  • 开源项目实战学习之YOLO11:12.4 ultralytics-models-sam-memory_attention.py源码分析
  • 强化学习中,frames(帧)和 episodes(回合)
  • 重排序模型解读 mxbai-rerank-base-v2 强大的重排序模型
  • 我司助力高校打造「智慧创新AI学习中心」
  • 互联网大厂Java求职面试:AI驱动的短视频直播平台架构设计
  • 特写|银耳种植“北移”到沧州盐山,村民入伙可年增收4万元
  • 大陆非遗项目打铁花、英歌舞将在台演出
  • 国新办将就2025年4月份国民经济运行情况举行新闻发布会
  • 习近平会见智利总统博里奇
  • 福建厦门市副市长、市公安局局长陈育煌出任吉林省公安厅厅长
  • 姚洋将全职加盟上海财经大学,担任滴水湖高级金融学院院长