尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

Python的类对象、实例对象、类属性、实例属性、类方法、实例方法
📅 发布时间:2026/6/19 1:25:08

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

相关新闻

  • 2026年池州一对一家教机构推荐:五大辅导机构测评排行榜,综合实力全解析!
  • 3、步进电机梯形加减速
  • 2025 最新除甲醛机构权威推荐榜单:标杆企业技术服务测评解析,新房 / 家具 / 车内 / 办公除醛优选酒店除甲醛 / 室内除甲醛 / 附近除甲醛 / 学校除甲醛公司推荐

最新新闻

  • 2026沈阳钻石回收没有证书能卖吗?实测1200笔无票钻石成交记录 - 奢品小当家
  • 本草拾光商行 —— 承德满族人,全品类回收,专业爱好驱动,报价地道 - 深鉴新闻
  • 广州古董珠宝也能卖高价,懂行老板不压价 - 奢品小当家
  • 20260619 了解V8规则
  • 2026 年 6 月最新无锡同城购宠评分榜实测|7 家正规猫舍犬舍横向测评,附近实体门店避坑全攻略 - 吉林同城获客
  • 广州租办公室哪里好?万博德舜大厦A塔居首,2026年6月四大商务区深度横评 - 速递信息

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号