登录
首页 >  文章 >  python教程

Python万物皆对象,理解对象模型本质

时间:2026-04-27 11:50:14 119浏览 收藏

Python的“万物皆对象”并非修辞,而是其底层运行机制的核心真相:从数字、字符串到函数、类乃至模块,每个实体都具备唯一身份(id)、明确类型(type)和具体值(value),并遵循统一的对象模型——变量只是指向对象的标签而非容器,可变与不可变的本质在于操作是否改变内存地址。这种高度一致的设计消除了类型特例,让属性赋值、函数传参、动态扩展甚至字典键使用都自然流畅,真正实现了“用一套逻辑理解整个语言”。

Python中一切皆对象如何理解_对象模型说明

Python里说“一切皆对象”,不是修辞,是事实。它意味着你写的每一行代码中能被命名、传递或操作的东西,背后都有一个完整的对象结构:有身份、有类型、有值,还能带属性、响应方法。

对象的三个身份证

每个Python对象都稳稳具备三项基本信息:

  • 身份(identity):由id()返回,是它在内存里的唯一地址。哪怕两个变量值相同,只要不是同一个对象,id()就不同;用is比较的就是这个身份。
  • 类型(type):由type()返回,决定了它能做什么——比如str.upper()list.append()。连intstr这些类型本身,也是type类的实例。
  • 值(value):就是你“看到”的内容,比如42"hello"[1, 2]。注意:值相同不等于对象相同,尤其对可变对象更明显。

变量只是贴纸,不是盒子

a = [1, 2],Python不是把列表“装进”变量a,而是创建一个列表对象,再让名字a指向它。再写b = a,只是给同一个对象又贴了一张标签。所以:

  • a.append(3)后,b也会看到[1, 2, 3]
  • a is bTrue,但a == c(其中c = [1, 2])虽为Truea is c却是False

函数、类、模块,全都是对象

它们不只是“能用”,而是完全符合对象定义:

  • def f(): passffunction类的实例,可以赋值、传参、加属性(如f.desc = "计算函数");
  • class A: passA本身是type类的实例,type(A)返回
  • import jsonjsonmodule类的实例,有__name____dict__,也能动态绑定新属性。

可变与不可变,关键看“改值”是否换地址

这不是语法规定,而是对象行为差异:

  • 不可变对象(如intstrtuple):任何看似“修改”的操作(如s += "x")都会生成新对象,id()必然变化;试图原地改(如s[0] = "X")直接报错。
  • 可变对象(如listdictset):调用.append().update()等方法,对象自身内容变,但id()不变。

这种统一模型让Python行为高度一致:不用记哪些是“原始类型”、哪些要特殊处理,所有东西都能查类型、设属性、传给函数、甚至当字典键(只要不可变)。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Python万物皆对象,理解对象模型本质》文章吧,也可关注golang学习网公众号了解相关技术文章。

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>