Python---面向对象的基本概念

一、面向对象的核心思想

面向对象编程的核心是以 “对象” 为中心组织代码,把现实世界中的事物抽象为程序中的 “对象”,每个对象包含:

  • 属性:描述事物的特征(如人的姓名、年龄,手机的品牌、价格);
  • 方法:事物能执行的行为(如人走路、说话,手机打电话、发短信)。

对比面向过程编程(按步骤写代码),面向对象更贴合人类对现实世界的认知,代码复用性、可维护性更高。

二、核心基础概念

1. 类(Class)—— 对象的 “模板”

类是对一类事物的抽象定义,相当于创建对象的 “模板” 或 “蓝图”,定义了这类事物共有的属性和方法。

  • 比如:“手机” 类,定义了所有手机都有的属性(品牌、价格)和方法(打电话、发短信);
  • 语法:用class 类名:定义,类名遵循 “大驼峰命名法”(如PhonePerson)。
2. 对象(Object/Instance)—— 类的 “实例”

对象是类的具体实例,是根据类模板创建的 “具体事物”。

  • 比如:“华为 Mate60” 是 “手机” 类的一个对象,“苹果 iPhone15” 是另一个对象;
  • 一个类可以创建无数个对象,每个对象有自己的属性值,但共享类的方法。
3. 属性(Attribute)—— 对象的 “特征”

属性是对象的静态特征,分为两类:

  • 类属性:属于类本身,所有对象共享(如所有手机都属于 “电子产品” 这个类别);
  • 实例属性:属于单个对象,每个对象的属性值可不同(如手机的价格、颜色)。
4. 方法(Method)—— 对象的 “行为”

方法是对象的动态行为,本质是定义在类中的函数,分为三类:

  • 实例方法:最常用,第一个参数必须是self(代表当前对象),通过对象调用;
  • 类方法:第一个参数是cls(代表当前类),用@classmethod装饰,通过类 / 对象调用;
  • 静态方法:无默认参数,用@staticmethod装饰,与类 / 对象无关,仅作为类的 “工具函数”。

三、核心概念的代码实现

1. 类与对象的基础用法

python

# 1. 定义类(模板) class Phone: # 类属性:所有对象共享 category = "电子产品" # 初始化方法:创建对象时自动执行,用于定义实例属性 def __init__(self, brand, price, color): # 实例属性:每个对象独有 self.brand = brand # 品牌 self.price = price # 价格 self.color = color # 颜色 # 实例方法:对象的行为,self代表当前对象 def call(self): print(f"{self.brand}手机({self.color})正在拨打电话") # 类方法:操作类属性,cls代表当前类 @classmethod def change_category(cls, new_category): cls.category = new_category print(f"类属性已修改:{cls.category}") # 静态方法:工具函数,与类/对象无关 @staticmethod def calculate_discount(price, discount): return price * discount # 2. 创建对象(实例化) phone1 = Phone("华为", 5999, "黑色") # 第一个对象 phone2 = Phone("苹果", 7999, "白色") # 第二个对象 # 3. 访问属性和方法 # 访问实例属性 print(phone1.brand) # 输出:华为 print(phone2.price) # 输出:7999 # 访问类属性(类/对象均可调用) print(Phone.category) # 输出:电子产品 print(phone1.category) # 输出:电子产品 # 调用实例方法 phone1.call() # 输出:华为手机(黑色)正在拨打电话 phone2.call() # 输出:苹果手机(白色)正在拨打电话 # 调用类方法 Phone.change_category("智能设备") # 输出:类属性已修改:智能设备 print(phone2.category) # 输出:智能设备(所有对象共享修改后的类属性) # 调用静态方法 discount_price = Phone.calculate_discount(5999, 0.8) print(f"折扣价:{discount_price}") # 输出:折扣价:4799.2
2. 关键概念解析
  • __init__方法:称为 “构造方法 / 初始化方法”,创建对象时自动执行,用于给对象初始化实例属性;
  • self:不是关键字,只是约定俗成的参数名,代表当前对象本身,调用实例方法时 Python 会自动传入;
  • 实例化:创建对象的过程,语法是对象名 = 类名(参数),参数对应__init__方法的参数(除 self 外);
  • 类属性 vs 实例属性:
    • 类属性存在于类的命名空间中,所有对象共享,修改类属性会影响所有对象;
    • 实例属性存在于每个对象的命名空间中,修改一个对象的实例属性不影响其他对象。

四、面向对象的核心原则(补充)

理解基本概念后,需了解 OOP 的核心设计原则,为后续学习三大特性打基础:

  1. 抽象:把现实事物的核心特征提取出来定义为类(比如手机只关注品牌、价格、打电话,忽略重量、尺寸等非核心特征);
  2. 封装:后续会详细讲,核心是把属性和方法绑定在类中,隐藏内部细节;
  3. 复用:通过类和对象,避免重复编写相同代码(比如多个手机对象共享call方法)。

五、常见误区

  1. 混淆类和对象:类是模板(抽象),对象是具体实例(比如 “手机” 是类,“我的华为手机” 是对象);
  2. 忘记self参数:实例方法必须带self,否则调用时会报错;
  3. 类属性和实例属性混用:如需每个对象有独立的属性值,用实例属性;如需所有对象共享,用类属性。

总结

  1. 是对象的模板,定义了一类事物的共有属性和方法;对象是类的具体实例,有自己的属性值;
  2. 属性分类属性(共享)和实例属性(独有),方法分实例方法(self)、类方法(cls)、静态方法(无默认参数);
  3. __init__是初始化方法,创建对象时自动执行,用于初始化实例属性;self代表当前对象,是实例方法的必选参数。

这些基本概念是学习 Python 面向对象编程的基石,掌握后可进一步学习封装、继承、多态三大核心特性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1129389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

空间选择性ALE的两种工艺路径

空间选择性ALE的两种工艺路径 之前,我们聊过什么是ALE,详见文章:什么是原子层刻蚀(ALE)? 什么是空间选择性ALE? 空间选择性 ALE(Spatially selective ALE)&#xff0c…

空间选择性ALE的两种工艺路径

空间选择性ALE的两种工艺路径 之前,我们聊过什么是ALE,详见文章:什么是原子层刻蚀(ALE)? 什么是空间选择性ALE? 空间选择性 ALE(Spatially selective ALE)&#xff0c…

Z-Image-Turbo皮影戏风格图像生成实验

Z-Image-Turbo皮影戏风格图像生成实验 引言:当AI遇见传统艺术——皮影戏风格的探索之旅 在AI图像生成技术飞速发展的今天,我们不再满足于简单的“高清照片”或“动漫风格”,而是开始尝试将传统文化元素与现代生成模型深度融合。阿里通义推出的…

真实案例:某服装品牌用M2FP构建虚拟换装系统降本60%

真实案例:某服装品牌用M2FP构建虚拟换装系统降本60% 在数字化营销与个性化体验日益重要的今天,虚拟试衣已成为服装零售行业提升转化率、降低退货成本的关键技术。然而,传统方案依赖高精度3D建模和GPU集群推理,部署成本高昂&#x…

金电镀凸块的应用

金电镀凸块的应用什么是金凸块?金凸块(Gold Bump / Au Bump)是做在芯片焊盘(Pad)上的一类微型“凸起金属端子”,材料以金(Au)为主,用来把芯片与外部基板/玻璃/柔性板实现…

金电镀凸块的应用

金电镀凸块的应用什么是金凸块?金凸块(Gold Bump / Au Bump)是做在芯片焊盘(Pad)上的一类微型“凸起金属端子”,材料以金(Au)为主,用来把芯片与外部基板/玻璃/柔性板实现…

模型融合技巧:结合M2FP与其他CV模型

模型融合技巧:结合M2FP与其他CV模型 📖 项目背景与技术痛点 在计算机视觉领域,人体解析(Human Parsing) 是一项基础但极具挑战的任务。它要求对图像中的人体进行像素级语义分割,精确识别出如头发、面部、上…

Z-Image-Turbo故障艺术(Glitch Art)特效实现

Z-Image-Turbo故障艺术(Glitch Art)特效实现 引言:从AI图像生成到数字美学实验 在当代数字艺术创作中,故障艺术(Glitch Art) 作为一种反常规、反完美的视觉表达形式,正逐渐被艺术家和开发者所…

M2FP色彩映射表:各身体部位对应颜色编码说明

M2FP色彩映射表:各身体部位对应颜色编码说明 🧩 M2FP 多人人体解析服务 在计算机视觉领域,人体解析(Human Parsing) 是一项关键的细粒度语义分割任务,旨在将人体图像划分为多个具有明确语义的身体部位区域。…

无需CUDA也能做人像分割?M2FP CPU镜像填补无卡用户空白

无需CUDA也能做人像分割?M2FP CPU镜像填补无卡用户空白 📖 项目简介:M2FP 多人人体解析服务 在当前AI视觉应用日益普及的背景下,人像语义分割已成为图像编辑、虚拟试衣、智能安防等场景的核心技术之一。然而,大多数高性…

性能提升300%:M2FP模型推理优化全记录

性能提升300%:M2FP模型推理优化全记录 📌 背景与挑战:多人人体解析的工程落地难题 在智能视觉应用中,人体解析(Human Parsing) 是一项关键基础能力,广泛应用于虚拟试衣、动作识别、人像美化和安…

晶圆电镀的阳极钝化是什么?

晶圆电镀的阳极钝化是什么? 这个是可溶性阳极的常见问题,关于什么是可溶性阳极,可以参考之前文章:电镀机的阳极是什么材质? 用一句通俗的话来概括阳极钝化就是原本应该顺畅溶解、补充金属离子的阳极,因为…

晶圆电镀的阳极钝化是什么?

晶圆电镀的阳极钝化是什么? 这个是可溶性阳极的常见问题,关于什么是可溶性阳极,可以参考之前文章:电镀机的阳极是什么材质? 用一句通俗的话来概括阳极钝化就是原本应该顺畅溶解、补充金属离子的阳极,因为…

人体解析模型选型困惑?M2FP在准确性和易用性上实现双赢

人体解析模型选型困惑?M2FP在准确性和易用性上实现双赢 在当前计算机视觉应用日益深入的背景下,人体解析(Human Parsing) 已成为智能服装推荐、虚拟试衣、人像编辑、AR互动等场景的核心技术之一。然而,在实际项目落地…

你还在手动拼接mask?M2FP内置算法自动生成彩色分割图

你还在手动拼接mask?M2FP内置算法自动生成彩色分割图 📖 项目简介:M2FP 多人人体解析服务 在计算机视觉领域,人体解析(Human Parsing) 是一项细粒度的语义分割任务,目标是将人体图像中的每个像素…

基于SpringBoot的图书馆在线占座系统设计与实现

一、系统开发背景与意义 随着高校扩招与阅读需求增长,图书馆座位资源紧张问题日益突出。传统线下占座模式存在诸多弊端:早到占位却长时间空置导致资源浪费,人工登记繁琐易引发纠纷,学生难以实时掌握座位使用情况,常因“…

如何在企业级项目中集成Z-Image-Turbo图像生成能力?

如何在企业级项目中集成Z-Image-Turbo图像生成能力? 从本地工具到生产系统:Z-Image-Turbo的工程化跃迁 阿里通义Z-Image-Turbo WebUI图像快速生成模型,由科哥基于DiffSynth Studio框架进行二次开发构建,最初以交互式Web界面服务于…

C++26 专业版介绍

C26 是 ISO C 标准委员会发布的新一代编程语言标准(继 C20、C23 后的重大版本),核心目标是强化现代编程范式、提升性能与安全性、简化工程化开发,同时兼容既有代码生态,适配高性能计算、系统编程、嵌入式开发等核心场景…

从“实验助手”到“科研伙伴”:AI智能体如何重塑生物学探索的边界

试想这样一个场景:生物实验室里,一位研究员向电脑口述一个模糊的假设。紧接着,一个AI系统开始自主行动——它检索海量文献,设计出一套优化的实验方案,将指令分解发送给连接的自动化实验平台,机器人手臂随之…

智能光源的三大技术突破:从 “能用” 到 “精准” 的跨越

光场自适应调控技术:硬件不变,场景万变的魔法思奥特的光场自适应调控技术,堪称工业视觉检测领域的一项神奇突破。通过微棱镜阵列与多波段融合算法的精妙结合,实现了 “硬件不变,场景万变” 的奇妙效果。以可变角度环形…