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

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 = 10a = int(10)的效果完全相同。这是因为 Python 中intstrlist等都是内置的类,我们创建的变量就是这些类的实例。

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__在实例创建时自动调用,不需要显式调用。
  • 数据封装在实例中,每个实例的nameage互不影响。

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 生态中各种第三方库的设计思路,也为后续学习继承、多态等高级特性打下坚实基础。

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

相关文章:

  • GPT-5.5 API深度解析:从代码生成到企业级应用实战指南
  • 自动控制原理:从物理系统到数学模型的建立方法与核心思维
  • 嵌入式存储开发指南:从NAND Flash时序图到可靠驱动设计
  • 只记得内容却忘了文件名?Papra文档库部署与搜索教程
  • Google Earth接入Nano Banana 2:当AI图像生成遇上真实地图,边界在哪里?
  • 2026年 深圳家具检测机构推荐榜:成品/原辅材料/家居建材/空气质量深度测评与优选指南 - 优企名品
  • 免拆治理烧机油到底靠不靠谱?先把这几点搞清楚 - 趣闻早乐评
  • Struts框架核心原理与实战:从MVC模式到动态方法调用
  • x64游戏FPS矩阵定位工具:性能分析与调试实践指南
  • 嵌入式Linux启动全解析:Uboot、Kernel与Rootfs的协作与实战
  • 如何用PyInstxtractor轻松破解Python程序包:5个逆向工程实战技巧
  • 想找专业工艺品设计参考?看看口碑排行榜单在哪查
  • 远程协作响应延迟超8.2秒?AI混合办公管理平台选型避坑清单(仅剩3家通过ISO/IEC 27001-AI增强认证)
  • 智能对话系统开发指南:从架构设计到代码实现
  • Windows CMD下FTP命令全解析:从基础连接到批量文件传输实战
  • 建筑行业职业转型:从施工到设计的实战经验分享
  • Akagi雀魂助手:3步掌握麻将AI智能辅助,从新手到高手的终极指南
  • 51单片机中断系统全解析:从原理到实战,打造高效嵌入式程序
  • 3分钟上手B站数据爬取:这个开源项目让你轻松获取视频、弹幕和用户信息
  • MEME Suite实战指南:从算法原理到基序分析避坑
  • 2026年混凝土密封固化剂厂家推荐榜单:锂基/水剂/粉剂固化剂源头工厂,固化工程施工一站式优选 - 优企名品
  • Windows系统下Python命令无响应问题排查与解决指南
  • 2026精选河南粉末上料机工厂:实力厂商深度解析与选型指南 - 装修教育财税推荐2026
  • 钓鱼邮件域渗透实战教程:从情报收集到域控接管全链路攻防
  • Gemini3.1Pro智能体编码实践:自然语言生成可执行代码
  • 阶跃星辰Step Plan免费试用指南:API调用与功能验证全解析
  • 深入理解C语言static关键字的本质与应用
  • LangSmith LLM 网关:面向生产环境的Agent运行时管控方案
  • 惠州高端装备制造企业案例复盘:低成本GEO优化如何让AI一问就推荐,解锁询盘增长230%的核心逻辑
  • 河北丰圣塑业:华北工程橡塑材料一站式供应合作伙伴,聚氨酯密封胶/聚硫密封胶/橡胶止水带,闭孔泡沫板源头厂家哪个好 - 品牌推荐师