Python面向对象编程:类与实例全解
📅 2026/8/1 3:05:24
👁️ 次浏览
摘要本文从面向过程与面向对象的对比出发深入讲解 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 生态中各种第三方库的设计思路也为后续学习继承、多态等高级特性打下坚实基础。
1. 为什么你的浏览器总感觉“差口气”?作为一个每天要在浏览器里泡上十几个小时的开发者,我太懂那种感觉了:打开几十个标签页后,内存占用飙升,电脑风扇开始哀嚎;想快速找到昨天看过的某个技术文章ÿ…
📅 2026/8/1 3:05:24
1. 为什么这道题能决定大厂入场券?去年帮一位学员做模拟面试时,他对着这道经典系统设计题支吾了15分钟。三周后他告诉我,在字节跳动的终面现场,面试官推过来的题板上赫然写着几乎相同的题目——只不过这次他流畅的回答直接换来了H…
📅 2026/8/1 3:05:24
对于研发人员、项目负责人、政企方案策划人员而言,一场高分技术方案汇报,离不开三类核心物料:逻辑清晰且视觉专业的PPT配图、能够强化讲解节奏的动态演示短片、烘托汇报氛围的适配背景音乐。
多数从业者日常创作时,需要分开使用绘…
📅 2026/8/1 3:05:24
在科技飞速发展的当下,智能体技术正以前所未有的速度改变着我们的工作和生活。再过不久就到 2026 年了,面对市场上众多的智能体品牌,该如何做出靠谱的选择呢?广东裕富科技发展有限公司或许就是那个值得考虑的优质之选,…
📅 2026/8/1 18:07:33
大厂Java面试实录:从Redis缓存到Spring AI与RAG架构,谢飞机的渡劫之旅背景:某互联网大厂(主打内容社区与AIGC业务)Java后端面试现场。
人物:
面试官(老王):技术总监&…
📅 2026/8/1 18:07:33
免费解锁iOS设备:5分钟搞定苹果激活锁绕过终极指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n
你是否曾经因为忘记Apple ID密码而无法使用自己的iPhone?或者购买的二手苹果…
📅 2026/8/1 18:07:33
Python是一门解释型、面向对象、动态数据类型的高级编程语言。它的设计哲学强调代码可读性和简洁的语法,尤其适合初学者入门,同时也能胜任大型项目的开发。本文作为系列的第一篇,将从零开始带你搭建Python开发环境,并掌握最基础的…
📅 2026/8/1 18:07:33
Tesseract OCR引擎架构深度解析:企业级文本识别系统的完整技术指南 🚀 【免费下载链接】tesseract Tesseract Open Source OCR Engine (main repository) 项目地址: https://gitcode.com/GitHub_Trending/te/tesseract
Tesseract作为业界领先的开…
📅 2026/8/1 18:07:33
1. 项目背景与核心需求 在制药行业的生产线上,药片装瓶环节一直是个劳动密集型工序。传统人工装瓶方式存在效率低下、计数误差大、卫生管控难等问题。我们团队最近完成了一个基于PLC的自动药片装瓶机控制系统项目,通过自动化改造实现了每小时3000瓶的稳定…
📅 2026/8/1 18:06:33
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/1 0:00:26
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/1 0:00:30
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/1 0:00:30
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/8/1 1:20:16
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/8/1 1:20:19
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/8/1 1:20:17
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/1 0:00:26
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/1 0:00:30
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/1 0:00:30