Python面向对象编程入门:类、实例、初始化与封装实践
📅 2026/8/1 3:30:48
👁️ 次浏览
引言面向对象编程OOP是Python的核心范式之一。相比于面向过程的“堆叠代码”OOP强调设计——通过“类”和“实例”的交互来构建程序。本篇将从基础概念出发结合你的实际代码深入讲解类的定义、__init__初始化方法、实例属性封装并完成一个有趣的“随机点连线”小项目。1. 类与实例从int说起在Python中一切皆对象。我们常用的整数10实际上就是int类的实例。a int(10) # 等价于 a 10 print(a, type(a)) # 10 class int自定义类使用class关键字class Person: 人类类型 pass p1 Person() # 创建Person类的实例 print(p1, type(p1)) # __main__.Person object at 0x... class __main__.Person每个实例在内存中都有独立的地址它们共享类定义的属性和方法。2. 初始化方法__init__给实例“赋初值”__init__是Python的魔法方法在实例化时自动调用用于初始化实例属性。你的代码演示了这一点class Person: def __init__(self, name, age): print(初始化函数执行了, id(self)) self.name name # 绑定属性 self.age age p1 Person(马云, 25) print(id(p1), p1.name, p1.age) # 输出内存地址和属性值self代表当前实例它和类外部的实例名如p1指向同一块内存id(self) id(p1)。通过self.属性名 值我们将外部传入的数据绑定到实例上实现“个性化”。3. 封装通过方法访问和修改私有数据封装是OOP的三大特性之一将数据属性和操作方法包装在一起。你的Person类提供了get/set方法便于控制访问def get_name(self): return self.name def set_name(self, name): self.name name这样做的好处是可以在set方法中添加校验逻辑例如年龄不能为负而外部调用者无需关心内部实现。4. 实战练习随机点距离计算与可视化你在代码中定义了一个Point类并利用turtle绘制多个随机点之间的连线。这是一个很好的封装练习。Point类class Point: def __init__(self, x, y): self.x x self.y y def get_x(self): return self.x def get_y(self): return self.y计算两点距离欧氏距离import random p1 Point(10, 20) p2 Point(30, 40) distance ((p1.get_x() - p2.get_x())**2 (p1.get_y() - p2.get_y())**2) ** 0.5 print(distance) # 28.284...可视化绘制Draw类接收一个Point列表并在海龟画布上绘制所有点之间的连线组合数C(n,2)。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(i1, 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 [Point(random.randint(-200,200), random.randint(-200,200)) for _ in range(3)] draw Draw(points) draw.draw_between_points()运行后你会看到海龟依次连接所有点对形成三角形3个点或其他多边形更多点。5. 总结类是模板实例是具体的对象。__init__用于初始化实例属性self代表当前实例。封装通过方法暴露属性提高代码的可维护性和安全性。动手实践如随机点连线能加深对OOP的理解。
1. 项目概述:为什么图像增强是计算机视觉的“基本功”?在计算机视觉和图像处理领域,图像增强算法就像是摄影师手中的“滤镜”和“后期软件”。它的核心目的不是改变图像的内容,而是通过调整图像的视觉属性,让其中对我们…
📅 2026/8/1 3:30:48
为什么想写一篇关于eDP/DP AUX信号介绍的文章呢?因为发现在实际应用中,DP本身的data信号是TX信号,信号是单向的,只要注意了让PCB走线长度及走线方式符合规范,并不容易出问题。反而AUX信号,虽然速率不高,但涉及SOC和屏端(或者是转换的bridge IC)双向通信,经常会遇到问…
📅 2026/8/1 3:30:48
1. 先理解这个挑战的核心:用「圆球体」形态通关《孢子》到底难在哪《孢子》这款游戏最吸引人的地方,就是玩家可以从单细胞生物开始,逐步进化到部落、文明、太空阶段。但如果你给自己加一个限制——全程保持「圆球体」形态通关,这就…
📅 2026/8/1 3:30:48
1. 项目概述:为什么我们需要 ArgoCD?如果你和我一样,在容器化和微服务这条路上摸爬滚打了好几年,那你一定对“部署”这件事又爱又恨。爱的是,Kubernetes 让应用的发布和管理变得前所未有的强大和灵活;恨的是…
📅 2026/8/1 4:16:39
1. 项目概述:从“打印”到“指令”的认知跃迁如果你接触过嵌入式开发,尤其是物联网、零售、餐饮或者工控领域,大概率绕不开一个看似简单却暗藏玄机的设备:热敏小票打印机。很多新手开发者第一次对接这类打印机时,可能会…
📅 2026/8/1 4:16:39
上个月,我帮一个团队优化他们的 AI Agent。
这个 Agent 做的事情很简单——处理客户的退款申请。但上线一个月,用户满意度只有 58%,大量投诉说"机器人听不懂人话"、“答非所问”、“流程卡住了”。
我看了他们的 Prompt,…
📅 2026/8/1 4:16:39
1. 项目概述:为什么我们需要“用户可编程”的控制系统?在工业自动化领域干了十几年,我见过太多这样的场景:一条产线或一台设备交付给客户后,客户的生产工艺或产品规格发生了微调。这时候,哪怕只是改变一个简…
📅 2026/8/1 4:16:39
终极免费视频修复神器:3步拯救损坏的MP4文件 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc
你是否遇到过珍贵的…
📅 2026/8/1 4:16:39
3分钟学会专业歌词制作:LRC Maker颠覆传统编辑体验 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker
你是否曾为制作精准的歌词时间轴而烦恼?传…
📅 2026/8/1 4:15:38
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