Python 类(Class)完全指南:语法、技巧与实战案例

Python 类(Class)完全指南:语法、技巧与实战案例

一、为什么需要 Class 类?

        用 Python 写代码时,我们一开始常常用函数(def)来封装逻辑,但遇到复杂问题就会力不从心 —— 比如要管理多个 “学生” 信息(姓名、成绩、选课),如果用变量存储,会散落一堆;用列表 / 字典,又难统一操作逻辑。

        而类(Class) 就像一个 “模板”,能把数据(属性)和操作数据的逻辑(方法)打包在一起,让代码更整洁、可复用、易维护。简单说:类是创建对象的 “蓝图”,对象是类的 “实例”—— 比如 “学生” 是类,“小明(姓名:小明,成绩:90)” 就是这个类的对象。

二、Class 类基础语法:从定义到使用

1. 定义一个类

        用class关键字定义类,类名通常首字母大写(规范),括号里可指定父类(默认是object,即所有类的基类)。

# 定义一个“学生”类 class Student: # 初始化方法:创建对象时自动调用,给对象赋初始属性 def __init__(self, name, score): # self:指代当前创建的对象,必须作为第一个参数 self.name = name # 给对象添加“姓名”属性 self.score = score # 给对象添加“成绩”属性 # 自定义方法:操作对象属性的逻辑 def show_info(self): # 打印学生信息 print(f"姓名:{self.name},成绩:{self.score}") def get_grade(self): # 根据成绩判断等级 if self.score >= 90: return "A" elif self.score >= 80: return "B" else: return "C"

2. 创建对象(实例化类)

定义好类后,像调用函数一样创建对象,传入__init__方法需要的参数(除了 self)。

# 创建第一个学生对象:小明 xiaoming = Student("小明", 92) # 创建第二个学生对象:小红 xiaohong = Student("小红", 85)

3. 访问对象的属性和方法

用 “对象。属性”“对象。方法 ()” 的方式操作对象。

# 访问属性 print(xiaoming.name) # 输出:小明 print(xiaohong.score) # 输出:85 # 调用方法 xiaoming.show_info() # 输出:姓名:小明,成绩:92 print(xiaohong.get_grade()) # 输出:B # 修改属性 xiaoming.score = 95 xiaoming.show_info() # 输出:姓名:小明,成绩:95

三、Class 类核心特性:让代码更强大

1. 封装:隐藏复杂逻辑

        封装就是把属性和方法 “藏” 在类里,只暴露必要的接口(方法),外部不用关心内部实现。比如get_grade方法,外部调用时只需要知道传入对象,不用管判断逻辑。

2. 继承:复用已有代码

        继承允许一个类(子类)继承另一个类(父类)的属性和方法,减少重复代码。子类可以新增属性 / 方法,也可以重写父类方法。

# 父类:Person(人) class Person: def __init__(self, name, age): self.name = name self.age = age def eat(self): print(f"{self.name}在吃饭") # 子类:Student(学生)继承Person class Student(Person): # 重写__init__方法:新增score属性 def __init__(self, name, age, score): # 调用父类的__init__方法,复用姓名、年龄属性 super().__init__(name, age) self.score = score # 新增方法:学习 def study(self): print(f"{self.name}在学习,成绩:{self.score}") # 创建学生对象 xiaoli = Student("小李", 18, 88) xiaoli.eat() # 继承父类方法,输出:小李在吃饭 xiaoli.study() # 子类新增方法,输出:小李在学习,成绩:88

3. 多态:同一接口,不同实现

多态是指子类重写父类方法后,不同子类对象调用同一方法会有不同表现。

# 父类:Animal class Animal: def speak(self): pass # 空实现,由子类重写 # 子类:Dog class Dog(Animal): def speak(self): print("汪汪汪") # 子类:Cat class Cat(Animal): def speak(self): print("喵喵喵") # 统一调用函数 def make_speak(animal): animal.speak() # 多态体现:不同对象调用同一方法,结果不同 dog = Dog() cat = Cat() make_speak(dog) # 输出:汪汪汪 make_speak(cat) # 输出:喵喵喵

四、实战案例:用 Class 管理图书信息

用类来实现一个简单的 “图书管理系统”,包含添加图书、查询图书、删除图书功能。

class BookManager: def __init__(self): # 用列表存储图书信息,每个元素是字典 self.books = [] # 添加图书 def add_book(self, book_id, title, author): # 判断图书是否已存在 for book in self.books: if book["book_id"] == book_id: print("该图书ID已存在!") return self.books.append({"book_id": book_id, "title": title, "author": author}) print("图书添加成功!") # 查询所有图书 def show_all_books(self): if not self.books: print("暂无图书信息!") return print("=== 所有图书信息 ===") for book in self.books: print(f"ID:{book['book_id']},书名:{book['title']},作者:{book['author']}") # 根据ID删除图书 def delete_book(self, book_id): for book in self.books: if book["book_id"] == book_id: self.books.remove(book) print("图书删除成功!") return print("未找到该图书ID!") # 测试代码 if __name__ == "__main__": manager = BookManager() manager.add_book(1, "Python编程:从入门到实践", "埃里克·马瑟斯") manager.add_book(2, "流畅的Python", "卢西亚诺·拉马略") manager.show_all_books() manager.delete_book(1) manager.show_all_books()

五、学习总结

1.类是 Python 面向对象编程的核心,核心作用是封装、继承、多态

2.定义类用class,初始化属性用__init__,方法第一个参数必须是self

3.用类可以把复杂逻辑拆分成独立的 “对象”,让代码更易维护、复用性更强;

4.入门建议:先从定义简单类、创建对象开始,再逐步学习继承和多态,多写实战案例巩固。

Read more

目标检测算法——YOLOV11——算法详解

目标检测算法——YOLOV11——算法详解

关键词:YOLO V11、目标检测、算法、解读、详解、教程、结构图、分析 一、主要贡献     其实到了YOLOV5 基本创新点就不太多了,主要就是大家互相排列组合复用不同的网络模块、损失函数和样本匹配策略,需要注意YOLO V5、V8 V11 都是1个公司的,其余的个人建议看看V6美团的,剩下的了解就好。     V11支持多种视觉任务:物体检测、实例分割、图像分类、姿态估计和定向物体检测(OBB)。     Yolo v11 基本和YOLOV8同源,甚至git目前都是1个,部分代码注释还是YOLOV8的,所以建议先看我写的YOLOV8相关博客,对比YOLOV8主要涉及到:     *backbone 中的使用C2f模块 变为 c3k2 模块。     *backbone 中的最后一层(sppf层)后增加了C2PSA模块。     *head 解耦头中的分类检测头两个Conv 变为 DWConv。     整体技术而言:

By Ne0inhk
初探算法的魅力——【暴力枚举】

初探算法的魅力——【暴力枚举】

点击下面查看作者专栏🔥🔥C语言专栏🔥🔥🌊🌊编程百度🌊🌊🌠🌠如何获取自己的代码仓库🌠🌠 🌐索引与导读 * 暴力枚举(BF)的概念 * 暴力枚举的算法步骤 * 例题讲解 * 经典案例讲解一:百鸡问题 * 题目解析 * 思路方案 * 经典案例讲解二:盛最多水的容器 * 暴力枚举算法 * 最优解 * 经典案例讲解三:两数之和 * 经典案例讲解四:2025 * 💻 代码实现 * 希望读者多多三连 * 给小编一些动力 * 蟹蟹啦! 暴力枚举(BF)的概念 暴力枚举也称为穷举法,是计算机算法中最基础、最直观,但也是最费劲的一种解题思路 像我们平时没有最优解的算法题,往往都可以通过暴力枚举去算出最终结果 * 核心思想 不靠巧妙的技巧,而是利用计算机强大的计算能力,把所有可能的情况列举出来,一个一个去验证,直到找到正确答案 暴力枚举的算法步骤 * 列举 :确定解空间的范围,列出所有可能的解候选者 * 检验 :对每一个候选者进行判断,看它是否满足题目

By Ne0inhk
哈希表的介绍和使用

哈希表的介绍和使用

一.哈希表的概念   哈希又称散列,本质是通过一种键值对存储的高校组织方式。通过一个哈希函数,将数据的关键字直接映射到存储的数据中,实现快速的定位。   就像在图书馆中可以根据图书的编号来快速查找图书的位置。 二.直接定址法   直接借用关键字作为存储位置的下标, class Solution { public:     int first(string s) {         int count[26] = { 0 };         for (auto e : s) {             count[e - 'a']++;         }         for (size_t i = 0; i < s.size(); i++) {             if (count[s[i] - 'a'

By Ne0inhk
【C语言】排序算法——希尔排序以及插入排序 ——详解!!!

【C语言】排序算法——希尔排序以及插入排序 ——详解!!!

【C语言】排序算法——希尔排序以及插入排序详解 * 前言 * 一 、插入排序 * 1. 视频演示 * 2. 算法思想 * 3. 实现思路 * 4. 代码演示 * 二 、希尔排序 * 1. 视频演示 * 2. 算法思想 * 3. 实现思路 * (1)分组 * (2)预排序 * (3)最终排序 * (4)gap的取值 * 4. 代码演示 * 结语 前言 在学习循环的时候,我们学习到了冒泡排序这个算法 那么,除了冒泡排序,还有什么排序算法呢? 今天给大家带来的是插入排序以及希尔排序 一 、插入排序 1. 视频演示 首先给大家看一段视频,让大家先看看插入排序是怎么运行的 插入排序演示 2. 算法思想 我们可以从视频里看见,

By Ne0inhk