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

Python进阶教程:面向对象编程(OOP)

@

目录
  • Python进阶教程:面向对象编程(OOP)
    • 一、什么是面向对象编程
    • 二、类与对象
      • 2.1 定义类
      • 2.2 self 是什么
    • 三、封装
    • 四、继承
    • 五、多态
    • 六、类属性与类方法
    • 七、魔法方法
    • 八、实战:图书管理系统
    • 总结

Python进阶教程:面向对象编程(OOP)

本文是 Python 入门教程系列 的第 2 篇。上一篇介绍了 Python 的基础语法(变量、条件、循环、函数),本篇深入讲解面向对象编程

一、什么是面向对象编程

面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程思想,它把数据和对数据的操作封装成对象。与面向过程相比,OOP 更适合大型项目:

  • 可复用:类可以多次实例化
  • 易维护:代码结构清晰
  • 可扩展:通过继承轻松扩展功能

OOP 三大特性:封装、继承、多态

二、类与对象

2.1 定义类

用 class 关键字定义类,用类创建对象:

class Dog:def __init__(self, name, age):self.name = nameself.age = agedef bark(self):print(f"{self.name} 汪汪叫!")def info(self):print(f"{self.name}今年{self.age}岁")dog1 = Dog("旺财", 3)
dog1.bark()
dog1.info()

2.2 self 是什么

self 代表当前实例,所有实例方法第一个参数必须是 self,用于访问实例属性和其他方法。

三、封装

封装将内部细节隐藏,通过方法对外提供接口。Python 用命名约定实现私有:

class BankAccount:def __init__(self, owner, balance=0):self.owner = ownerself.__balance = balancedef deposit(self, amount):if amount > 0:self.__balance += amountprint(f"存入{amount}元,余额{self.__balance}元")def withdraw(self, amount):if 0 < amount <= self.__balance:self.__balance -= amountprint(f"取出{amount}元,余额{self.__balance}元")else:print("余额不足!")def get_balance(self):return self.__balanceacc = BankAccount("小明", 1000)
acc.deposit(500)
acc.withdraw(200)

四、继承

子类继承父类的属性和方法,并可扩展或重写:

class Animal:def __init__(self, name):self.name = namedef speak(self):print("动物叫")class Cat(Animal):def speak(self):print(f"{self.name} 喵喵叫!")class Dog(Animal):def speak(self):print(f"{self.name} 汪汪叫!")animals = [Cat("咪咪"), Dog("旺财")]
for a in animals:a.speak()

五、多态

多态指同一操作作用于不同对象产生不同结果。上面的例子中,speak() 对猫和狗有不同的表现,这就是多态。

六、类属性与类方法

class Student:school = "第一中学"def __init__(self, name):self.name = name@classmethoddef get_school(cls):return cls.school@staticmethoddef hello():print("这是静态方法")s1 = Student("张三")
s2 = Student("李四")
print(s1.school, s2.school)
print(Student.get_school())

七、魔法方法

Python 中以双下划线开头和结尾的方法是魔法方法,如 initstrlen

class Book:def __init__(self, title, pages):self.title = titleself.pages = pagesdef __str__(self):return f"《{self.title}》共{self.pages}页"def __len__(self):return self.pagesb = Book("Python编程", 300)
print(b)
print(len(b))

八、实战:图书管理系统

综合运用所学知识,实现一个简单的图书管理:

class Book:def __init__(self, title, author):self.title = titleself.author = authorself.borrowed = Falsedef __str__(self):status = "已借出" if self.borrowed else "可借"return f"《{self.title}》- {self.author} [{status}]"class Library:def __init__(self):self.books = []def add_book(self, book):self.books.append(book)print(f"添加成功:{book}")def borrow(self, title):for book in self.books:if book.title == title and not book.borrowed:book.borrowed = Trueprint(f"借出成功:{book}")returnprint(f"《{title}》不可借")def show_all(self):for book in self.books:print(book)lib = Library()
lib.add_book(Book("Python入门", "张三"))
lib.add_book(Book("算法导论", "李四"))
lib.borrow("Python入门")
lib.show_all()

总结

本篇讲解了 OOP 的三大特性(封装、继承、多态)以及类属性、魔法方法等进阶知识,并用图书管理系统串起全部知识点。下一篇将介绍文件操作与异常处理,敬请关注!

http://www.jsqmd.com/news/1394220/

相关文章:

  • Shader Variant 变多前,先给构建和运行各设一道门
  • 2026嘉兴GEO优化公司推荐出炉!一网推嘉兴运营中心王超团队 - 产品推荐官
  • 运维控制台升级:从只读监控到实时诊断的架构设计与安全实践
  • 观测云与AI Agent融合:实现运维智能化范式跃迁的实践指南
  • 中网B2B战略咨询如何帮正泰把「铺货」升级为「铺品牌」
  • 20元DIY快乐保存器:ATtiny85与音频模块的极客实践
  • 福州自考函授最新政策解读与机构选择指南:2026 年实用版 - 讲清楚了
  • 智能耳机如何通过DSP技术打造沉浸式音乐练习环境
  • 武汉想开医械电商,二类医疗器械备案需要什么条件?看完少跑弯路 - 招小财
  • 佛山防水补漏市场深度调研报告(2026)|本地靠谱服务商盘点推荐 - 捷修防水
  • [20260809]Row Cache Mutex 定位具体对象的方法.txt
  • Unity DOTS 升级,先把 System 顺序和结构变更测清
  • 慢病全流程管理平台是做什么的?2026年8月一篇文章一次性说清楚
  • 基于Python的Modbus TCP工业一体机数据采集系统开发实战
  • AI时代软件工程师技能重塑:从代码生成到人机协同的工程实践
  • SQL入门实战:从零掌握数据库增删改查与安全编程
  • 重剖
  • Claude Code Hooks:事件驱动的AI编程助手自动化工作流实战
  • Demucs音频分离部署完整指南:3分钟安装到GPU提速300%的实战优化
  • ROS2机器人开发避坑指南:从核心概念到实战通信模型详解
  • 中网B2B战略咨询:拒绝C端套路,B2B全案讲决策链沟通
  • Web安全实战:文件包含漏洞原理、利用与靶场复现
  • 从概念到实践:构建算力评估与调度系统,解析AI与区块链算力交易
  • 从Claude Code源码泄露看AI编程助手工程架构:RAG、异步管道与安全沙箱
  • 实验超人、实验姐、OK哥、蓝博士、试管宝:实了个验IP家族正式集结 - 实了个验
  • 图书馆静谧环境构建:主流声学品牌产品与服务梳理
  • 华中师范大学838考研强化复习:如何高效利用划重点资料攻克考点
  • Spring AI:Java开发者构建生产级AI应用的统一抽象框架
  • Skaling Law:大模型训练中参数与数据的最优配比原理与实践
  • 前馈神经网络原理详解:从神经元到反向传播的完整拆解