Python的类对象、实例对象、类属性、实例属性、类方法、实例方法

news/2025/11/21 15:56:43/文章来源:https://www.cnblogs.com/zjxcyr/p/19253393

Python的类对象、实例对象、类属性、实例属性、类方法、实例方法

原文链接: https://blog.csdn.net/qq_44154915/article/details/134047553

简易理解(快速理解)

  • 类对象:定义的类就是类对象
  • 实例对象:类对象实例化后就是实例对象
  • 类属性:定义在 init 外部的变量
  • 实例属性:定义在__init__内部的带有self.的变量
  • 类方法:定义在类对象中 且 被@classmethod 装饰的方法就是类方法
  • 实例方法:定义在类对象中,且 未被@classmethod 装饰的方法就是实例方法

较深理解

在Python中,类(class)是一种用于创建对象的蓝图或模板。对象(object)是根据类创建的具体实例。类可以包含类属性、实例属性、类方法和实例方法,这些用于定义类的特征和行为。

  1. 类对象(Class Object):类本身也是一个对象,它用于创建类的实例对象。类对象通常用于访问类属性和类方法。例如:
class Car:make = "Toyota"  # 类属性car_class = Car  # car_class是Car类的类对象

我们输出一下car_class结果为 <class '__main__.Car'>

<class '__main__.Car'> 是Python中表示一个类的标识符。我来详细解释这个结果:

  • <class '...' > 表示一个类对象的引用,其中 ... 是类的完整限定名称(包括模块名)。在这里,... 由 __main__.Car 表示。
  • __main__ 是模块名。在Python中,当您直接运行一个脚本时,它将被视为__main__模块,也就是主模块。所以,__main__.Car 意味着 Car 类是在当前执行的脚本(主模块)中定义的。

所以,<class '__main__.Car'> 表示在当前运行的脚本中定义的 Car 类的类对象。这个标识符可以用来引用该类,调用类方法,或创建该类的实例对象。

  1. 实例对象(Instance Object):实例对象是类的具体实例,具有类定义的属性和方法。每个实例都是类的独立对象,可以有自己的属性值。例如:
car_instance = Car()  # car_instance是Car类的一个实例对象

我们输出一下car_instance的结果 <__main__.Car object at 0x00000256C876E640>

<__main__.Car object at 0x00000256C876E640> 是Python中表示一个类的实例对象的标识符。让我为您详细解释这个结果:

  • <__main__.Car object at 0x00000256C876E640> 表示一个 Car 类的实例对象。
  • <__main__.Car> 表示对象所属的类,这里是 Car 类,__main__ 表示这个类是在当前执行的脚本(主模块)中定义的。
  • object at 0x00000256C876E640 提供了对象在内存中的地址,通常以十六进制表示。这个地址是对象在计算机内存中的位置,用来唯一标识对象。

所以,<__main__.Car object at 0x00000256C876E640> 表示在当前执行的脚本中定义的 Car 类的一个实例对象,其内存地址为 0x00000256C876E640。您可以使用这个标识符来引用和操作这个特定的对象。

  1. 类属性(Class Attribute):类属性是附加到类上的属性,通常对于所有该类的实例都是相同的。它们在类的所有实例之间共享。例如,上面的make是一个类属性,所有Car类的实例都共享相同的make属性。
  2. 实例属性(Instance Attribute):实例属性是属于实例的属性,每个实例可以具有不同的值。它们在每个实例之间是独立的。例如,如果您为Car类的两个不同实例设置颜色属性,它们可以有不同的颜色值。
car_instance1.color = "Blue"  # 实例属性
car_instance2.color = "Red"   # 实例属性
  1. 类方法(Class Method):类方法是绑定到类而不是实例的方法。它们可以访问和修改类属性,但通常不能访问实例属性。类方法使用@classmethod装饰器定义,通常接受类作为第一个参数(通常命名为cls)。例如:
class Car:make = "Toyota"@classmethoddef get_make(cls):return cls.make# 使用类方法
make = Car.get_make()  # 返回"Toyota"
  1. 实例方法(Instance Method):实例方法是绑定到实例的方法,它们可以访问和修改实例属性。实例方法使用类的实例作为第一个参数(通常命名为self)。例如:
class Car:def __init__(self, color):self.color = color  # 实例属性def get_color(self):return self.color# 使用实例方法
car_instance = Car("Blue")
color = car_instance.get_color()  # 返回"Blue"

总之,类和实例是面向对象编程的基本概念,类属性和实例属性用于存储数据,类方法和实例方法用于定义类的行为。不同的对象可以有不同的实例属性值,但它们共享相同的类属性和类方法。

全面的举例说明

我们把上述都写在一段代码里进行分析

class Foo:# 【类属性】定义在 __init__ 外部的变量cls_attr = "我是类属性"def __init__(self):# 【实例属性】定义在__init__内部的带有self.的变量。没有self.是局部变量self.self_attr = "我是实例属性"@classmethoddef cls_func(cls):print("我是类方法")print("在类方法内部调用类属性", cls.cls_attr)def self_func(self):print("我是实例方法")print("在实例方法内部调用类属性", self.cls_attr)print("在实例方法内部调用实例属性", self.self_attr)if __name__ == '__main__':# 类对象:定义的类就是类对象print("类对象", Foo)# 实例对象:类对象实例化后就是实例对象self_obj = Foo()print("实例对象", self_obj)print("-" * 30)# 类属性:定义在 __init__ 外部的变量# 类属性可以被类对象调用,也可以被实例对象调用,调用方式是【对象.类属性】调用print("类对象调用类属性", Foo.cls_attr)print("实例对象调用类属性", self_obj.cls_attr)print("-" * 30)# 实例属性:定义在__init__内部的带有self.的变量# 实例属性只能实例对象调用print("实例对象调用实例属性", self_obj.self_attr)print("-" * 30)# 类方法:定义在类对象中 且 被@classmethod 装饰的方法就是类方法# 类方法可以被类对象调用,也可以被实例对象调用,调用方式是【对象.类属性】调用print("类对象调用类方法", Foo.cls_func())print("实例对象调用类方法", self_obj.cls_func())print("-" * 30)# 实例方法:定义在类对象中,且 未被@classmethod 装饰的方法就是实例方法# 实例方法只能被实例对象调用print("实例对象调用类方法", self_obj.self_func())

内存分配

当执行python脚本时,Python解析到类对象时,会给类对象在内存中分配一块区域,在这处内存中存储类对象的所有属性和方法。

当创建实例时,每创建一个实例就会将实例属性和方法全部复制一份,并存储到一块新的内存区域。

类属性和类方法不会被复制,但是我们可以通过实例对象调用它们,这是因为每个创建的实例对象都会添加__class__属性,该属性指向类对象,因此能够通过实例对象调用类属性和类方法。

image

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

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

相关文章

潜江一对一课外补习机构推荐:2026 最新教育机构天花板榜单!提分快还省钱

孩子语文阅读理解总丢分,数学公式记不牢,英语单词背了就忘,物理电学摸不着头脑,化学方程式不会配平,史地政知识点记不住?潜江家长给孩子找一对一辅导,是不是总陷入这样的纠结?“潜江城区、广华寺街道、浩口镇、…

2026年池州一对一家教机构推荐:五大辅导机构测评排行榜,综合实力全解析!

池州家长为孩子选小学、初中、高中一对一家教辅导时,盼从口碑排名靠谱的教育机构中,找兼顾课外补习与升学培优的培训选择 —— 既想靠针对性补课填知识缺口、跟校内进度,也盼借系统辅导提学习能力、为升学铺路,却常…

UVA1437 String painter 分析

题目概述 给定字符串 \(A\) 和字符串 \(B\),定一次操作为将 \(A\) 一个区间的字符全部换成同一个,问最小操作让 \(A\rightarrow B\)。 分析 一看完题目感觉似曾相识,好像有道题目类似吧。 就这道:P4170 [CQOI2007]…

Ubuntu22.04.4安装配置CUDA12.5,Cdnn官方详细版本

​安装需求如下图机器raid配置 两块磁盘做raid1,参见官方raid,配置手册https://www.supermicro.com/support/manuals/ 系统下载 https://old-releases.ubuntu.com/releases/22.04/ 制作U盘使用rufus制作,U盘系统安装…

2025 年 11 月电缆生产厂家排名出炉!知名品牌推荐 + 天津消防电缆厂家优选指南

电缆作为电力传输、工程建设、消防安全等领域的核心装备,其产品质量与企业实力直接关系到项目安全与使用体验。2025 年 11 月,结合行业口碑、生产资质、产品性能等多维度指标,本文整理了国内知名电缆生产厂家排名,…

2025恩施一对一家教机构综合推荐,提分优选:靠谱方案推荐排行榜

孩子成绩总上不去,恩施的家长们真是操碎了心!想找靠谱的一对一辅导,却发现越找越迷茫:有的机构宣传提分显著,实际课程枯燥乏味,孩子根本学不进去;有的师资介绍华丽,结果老师连恩施本地考纲都不熟悉;还有的收费…

低门槛 + 全周期赋能:天翼云息壤大模型应用服务平台加速千行百业 AI 落地

2025年,大模型应用服务平台已成为企业解锁AI价值的关键载体。它不仅是模型与业务的连接桥梁,更能提供从模型选型、开发适配到部署运维的全流程支持,旨在解决企业“技术门槛高、落地周期长、适配成本高”的核心痛点。…

三层C/S架构的部署图

三层C/S架构的部署图graph TDsubgraph A [表示层 - 客户端]A1[手机App]A2[微信小程序]A3[触摸屏自助终端]endsubgraph B [功能层 - 应用服务器集群]B1[负载均衡器<br>Nginx]B2[用户/订单服务]B3[支付/库存服务]B…

SATA接口调试问题记录

问题描述 在物理层进行建链过程,前面COMRESET、COMINT、COMWAKE以及Dial Tone过程,HOST、DEV都正常交互, 但Align到Sync过程,HOST收到DEV发送的原语Align后,给DEV发Sync,DEV还是一直给HOST回Align

3、步进电机梯形加减速

为什么要使用加减速呢?如果你在基础部分学习,硬件驱动细分器与软件的细分参数或定时器分频参数设置不当时启动电机时,会遇见步进电机有啸叫声但是不会转动,这是因为软件产生脉冲的频率大于步进电机的启动频率,步进…

云鼎未来,智营全局——哲讯科技以SAP Business ByDesign引领中型企业迈向协同运营新纪元

云鼎未来,智营全局——哲讯科技以SAP Business ByDesign引领中型企业迈向协同运营新纪元在数字化转型的浪潮中,中型企业正面临一场关乎未来的战略抉择:是继续依赖零散的管理系统勉强支撑,还是拥抱一体化平台实现全…

2025 最新除甲醛机构权威推荐榜单:标杆企业技术服务测评解析,新房 / 家具 / 车内 / 办公除醛优选酒店除甲醛 / 室内除甲醛 / 附近除甲醛 / 学校除甲醛公司推荐

引言 室内甲醛污染已成为全球关注的健康隐患,据国际室内空气质量协会(IAQA)最新数据,新装修空间甲醛超标率高达 82%,长期接触会导致呼吸道疾病、免疫力下降等健康风险。为筛选优质服务机构,本次榜单联合欧盟虫害…

超微Supermicro服务器安装英伟达A100,cuda

​系统raid配置系统安装及配置 系统安装选择开启ssh,这里配置联网信息,需要联网下载安装包 登录平台查看英伟达信息 安装gcc # 安装gcc12 sudo apt install gcc-12 sudo update-alternatives --install /usr/bin/…

镜头分辨率如何匹配工业相机的分辨率

能被分辨开来的两个物点之间的最小距离,就是镜头的物方分辨率。单位为m。这只是单纯镜头本身的参数,只反映镜头的解析能力,而和工业相机多少像素无关!它直接反映了,一个理想物点经过镜头成像后,会模糊成多大一个…

linux,centos,aarch架构下载并部署redis

linux,centos,aarch架构下载并部署redis1.第一步,当然是下载一个redis的稳定版, 如果能连上外网,直接命令下载就好sudo wget https://download.redis.io/releases/redis-7.4.5.tar.gz不能的话,就手动传上去 网址:…

2025年11月河南自习室加盟市场分析与品牌推荐

2025年11月河南自习室加盟市场分析与品牌推荐近年来,共享Ai自习室在河南等多个省份逐渐兴起,成为许多创业者关注的项目。面对不同的自习室加盟/代理品牌,许多初次接触这个行业的朋友会感到困惑:这些自习室加盟/代理…

习题解析之:判断火车票座位

习题解析之:判断火车票座位【问题描述】 我国高铁一等座车座席采用2+2方式布置,每排设有“2+2”方式排列四个座位,以“A、C、D、F”代表,字母“A”和“F”的座位靠窗,字母“C”和“D”靠中间走道。 二等座车座席采用2…

题解:NFLSOI#P10008. Speike和Tom

众所周知,Speike 狗是一条特别喜欢追着 Tom 打的狗。 现在,Tom 又把 Speike 惹生气了,现在 Speike 需要跨越千山万水找 Tom 报仇。 Speike 所在的世界可以看成是一个无穷大的平面,平面由一个平面直角坐标系确定。在…

洛谷 B4410:[GESP202509 一级] 金字塔 ← 循环结构

​【题目来源】https://www.luogu.com.cn/problem/B4410【题目描述】金字塔由 n 层石块垒成。从塔底向上,每层依次需要 nn, (n−1)(n−1), ⋯, 22, 11 块石块。请问搭建金字塔总共需要多少块石块?【输入格式】一行,…

CF246E bfs 序上莫队

来篇莫队,支持正义根号。 发现是数颜色,这不是我们莫队的经典题目吗,所以考虑莫队。 发现 \(k\) 级儿子挺好,这给出了两个性质,分别在 bfs 序和 dfs 序上。bfs 序上,同一子树内深度相同的点相邻。 dfs 序上,可以…