Python面向对象编程:类与实例全解
摘要本文从面向过程与面向对象的对比出发深入讲解 Python 中类与实例的核心概念包括类定义、初始化函数、属性和方法封装并通过点坐标类和绘画小案例带你快速上手面向对象编程。1. 面向过程 vs 面向对象在学习类之前先理解两种编程思维的区别面向过程侧重功能实现代码按步骤堆叠典型代表是 C 语言。面向对象侧重设计通过类与实例的相互调用来实现功能典型代表是 Java、Python。简单来说面向过程关注“怎么做”面向对象关注“谁来做”。Python 作为一门面向对象语言一切皆对象理解类和实例是掌握 Python 的关键一步。2. 类与实例的基本概念在 Python 中万物皆对象。一个整数、一个字符串本质上都是某个类的实例# 整数 10 本质上是 int 类的实例 num 10 print(num, type(num)) 通过 int 类显式创建实例 num2 int(10) print(num2, type(num2)) 字符串同理是 str 类的实例 text hello print(text, type(text)) 列表是 list 类的实例 items [1, 2, 3] print(items, type(items))运行以上代码会发现a 10和a int(10)的效果完全相同。这是因为 Python 中int、str、list等都是内置的类我们创建的变量就是这些类的实例。3. 自定义类以 Person 为例Python 允许我们使用class关键字定义自己的类型# 定义一个自定义类型 Book class Book: 书籍类型 创建两个 Book 类型的实例 book1 Book() book2 Book() book1 是 main 模块下的 Book 类型 print(book1, type(book1)) print(book2, type(book2)) 查看类的名称、文档字符串和成员 print(Book.name, Book.doc, dir(Book))这里有两个关键概念类是抽象的模板用来封装数据和数据的相关操作。实例是类的具体表现每个实例拥有自己独立的数据。4. 初始化函数与属性为了让实例在创建时就携带数据Python 提供了魔法函数格式为__函数名__其中最重要的一项是__init__初始化函数class Student: def __init__(self, name, score): print(初始化函数执行了, id(self)) # 给实例绑定数据 self.name name self.score score def get_name(self): return self.name def set_name(self, name): self.name name def get_score(self): return self.score def set_score(self, score): self.score score 类内的 self 完全等同于类外的实例名 执行类就是执行类的初始化函数 s1 Student(小明, 90) print(id(s1), s1, s1.name, s1.score) s1.set_name(小红) print(s1.name, s1.get_name()) s1.set_score(95) print(s1.get_score()) s2 Student(小刚, 88) print(id(s2), s2, s2.name, s2.score) s2.set_name(小丽) print(s2.name, s2.get_name()) s2.set_score(92) print(s2.get_score())理解要点self代表当前实例本身在类内部通过self.属性名来绑定数据。__init__在实例创建时自动调用不需要显式调用。数据封装在实例中每个实例的name、age互不影响。5. 封装一个点坐标类下面将以上知识综合起来封装一个二维平面上的点坐标类并计算两点之间的距离# 封装一个矩形类宽、高 class Rectangle: def __init__(self, width, height): self.width width self.height height def get_width(self): return self.width def get_height(self): return self.height def area(self): return self.width * self.height 创建两个矩形实例 r1 Rectangle(10, 20) r2 Rectangle(30, 40) 计算面积 print(r1.area()) print(r2.area())通过Point类的封装点的坐标数据和获取坐标的操作被绑定在一起代码更清晰、更易维护。6. 绘画小案例随机点连线最后结合 Python 的turtle模块用类来绘制多个随机点之间的连线把面向对象思维落地为可视化效果import random import turtle class Draw: def init(self, points): self.points points def draw_between_points(self): turtle.up() for i in range(len(self.points)): for j in range(i 1, len(self.points)): turtle.goto(self.points[i].get_x(), self.points[i].get_y()) turtle.down() turtle.goto(self.points[j].get_x(), self.points[j].get_y()) turtle.up() turtle.mainloop() 随机生成 3 个矩形中心点并连线 points [Rectangle(random.randint(-200, 200), random.randint(-200, 200)) for i in range(3)] draw Draw(points) draw.draw_between_points()这个案例展示了面向对象的典型用法Point类专注于点的数据和行为Draw类专注于绘图逻辑两个类通过实例相互调用各自职责清晰。7. 总结本文从面向过程和面向对象的对比入手逐步讲解了 Python 中类的定义、实例的创建、初始化函数__init__的作用以及数据封装和获取方法。通过点坐标类和绘画小案例你将感受到面向对象编程带来的代码组织优势。掌握了类和实例就能更好地理解 Python 生态中各种第三方库的设计思路也为后续学习继承、多态等高级特性打下坚实基础。

相关新闻

CSDN浏览器助手:开发者效率工具,全局搜索与智能工作流实战

CSDN浏览器助手:开发者效率工具,全局搜索与智能工作流实战

1. 为什么你的浏览器总感觉“差口气”?作为一个每天要在浏览器里泡上十几个小时的开发者,我太懂那种感觉了:打开几十个标签页后,内存占用飙升,电脑风扇开始哀嚎;想快速找到昨天看过的某个技术文章&#xff…

2026/8/1 3:05:12阅读更多 →
大厂系统设计面试:高并发抽奖系统架构解析

大厂系统设计面试:高并发抽奖系统架构解析

1. 为什么这道题能决定大厂入场券?去年帮一位学员做模拟面试时,他对着这道经典系统设计题支吾了15分钟。三周后他告诉我,在字节跳动的终面现场,面试官推过来的题板上赫然写着几乎相同的题目——只不过这次他流畅的回答直接换来了H…

2026/8/1 3:05:12阅读更多 →
DFS算法实战:C++实现迷宫最短路径搜索与回溯优化

DFS算法实战:C++实现迷宫最短路径搜索与回溯优化

1. 项目概述:从迷宫到最短路径的算法实践迷宫问题,听起来像是儿时的游戏,但在计算机科学领域,它却是理解图论和搜索算法的绝佳沙盒。当我们用C/C去实现一个寻找迷宫最短路径的程序时,这背后远不止是“走通”那么简单&a…

2026/8/1 3:03:12阅读更多 →
Linux存储管理实战:eMMC/SD卡分区、格式化与故障修复指南

Linux存储管理实战:eMMC/SD卡分区、格式化与故障修复指南

1. 项目概述:为什么需要掌握Linux下的存储介质管理在嵌入式开发、服务器运维甚至是日常的桌面使用中,我们经常会遇到需要对eMMC(嵌入式多媒体卡)或SD卡这类存储介质进行初始化和管理的场景。比如,拿到一块全新的RK3562…

2026/8/1 8:04:47阅读更多 →
拍卖反转策略:从数据清洗到实盘落地的量化交易指南

拍卖反转策略:从数据清洗到实盘落地的量化交易指南

1. 先搞清楚“关键拍卖反转”到底解决什么问题这个主题看起来像是交易策略或市场分析中的一个特定方法。从标题来看,“关键拍卖反转”可能指的是在拍卖机制驱动的市场中(比如某些金融衍生品、大宗商品或高频交易场景),价格在特定拍…

2026/8/1 8:04:47阅读更多 →
MOS管与BJT饱和区本质差异:从电压/电流控制到开关/放大应用

MOS管与BJT饱和区本质差异:从电压/电流控制到开关/放大应用

1. 从一次电路调试的困惑说起最近在调试一个电源开关电路时,遇到了一个让我琢磨了好一阵子的现象。电路里用了一个MOS管作为主开关,我按照常规思路,把栅极电压(Vgs)加得足够高,理论上管子应该完全导通&…

2026/8/1 8:04:47阅读更多 →
Spring Boot整合Druid连接池配置失效的五大原因与排查指南

Spring Boot整合Druid连接池配置失效的五大原因与排查指南

1. 问题引入:一个看似简单的配置为何会“失灵”? 最近在整合一个Spring Boot项目,准备接入Druid数据库连接池。这本来应该是个常规操作,按照官方文档或者网上的教程,在 application.yml 里加上几行配置,启…

2026/8/1 8:04:47阅读更多 →
电赛控制题制胜心法:从PID调参到工程化系统构建

电赛控制题制胜心法:从PID调参到工程化系统构建

去年备赛时,我见过太多队伍在控制题上栽跟头。他们不是不懂PID,也不是不会写代码,而是把精力用错了地方。有的队伍花了一周时间把小车循迹的响应调得飞快,结果比赛当天因为一个电机驱动模块过热保护,整个系统直接宕机&…

2026/8/1 8:04:47阅读更多 →
冲锋衣选购指南:如何判断防水透气性能与避免常见误区

冲锋衣选购指南:如何判断防水透气性能与避免常见误区

最近在整理换季装备,翻出去年入手的几件冲锋衣,发现有的已经防水涂层失效,有的接缝处开始渗水。这才意识到,很多标榜“三防”的户外服装,实际性能差异巨大。今天想结合自己多次踩坑的经历,聊聊如何判断一件…

2026/8/1 8:02:47阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →