登录
首页 >  文章 >  python教程

Python“一切皆对象”怎么理解?

时间:2026-01-30 15:48:37 317浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《Python “一切皆对象”到底是什么意思?》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

Python奉行“一切皆对象”设计哲学,所有值(含数字、字符串、函数、类、类型本身)均为对象,具备类型、身份和值,可赋值、传递、返回、存储,并支持反射操作。

Python 中“一切皆对象”到底意味着什么?

“一切皆对象”是 Python 的核心设计哲学,意思是 Python 中所有值——包括数字、字符串、函数、模块、类,甚至类型本身——都有对应的对象,都具备对象的基本特征:有类型、有身份(内存地址)、有值,并且可以被赋值给变量、作为参数传递、作为返回值、存入容器等。

所有值都有类型和身份

每个值在 Python 中都是某个类的实例,哪怕是最简单的整数:

  • 42int 类的实例,type(42) 返回
  • "hello"str 类的实例,id("hello") 能拿到它在内存中的唯一标识
  • 就连 intstr 这些类型本身,也是 type 类的实例:type(int)

函数和类也是对象,可操作、可传递

这打破了传统编程中“代码”与“数据”的严格界限:

  • 你可以把函数赋给变量:my_func = len,然后调用 my_func("abc")
  • 可以把函数作为参数传给另一个函数:sorted([3,1,2], key=str) 中的 str 就是对象
  • 类本身也是对象,可以动态创建、修改或传递:MyClass = type('MyClass', (), {}) 直接生成一个类

类型系统统一,没有“原始类型”例外

不像 Java 有 int(基本类型)和 Integer(对象)之分,Python 没有这种割裂:

  • 5 不是“内建符号”,而是一个真实的 int 对象,拥有方法:5.bit_length() 返回 3
  • TrueFalsebool 类的两个唯一实例,而 bool 本身继承自 int(所以 True == 1True
  • 甚至 None 也是 NoneType 类的唯一实例,type(None) 返回

运行时可检查、可修改(有限度)

因为一切都是对象,Python 提供了丰富的反射能力:

  • dir(x) 列出对象所有属性和方法
  • getattr(obj, 'attr', default) 动态获取属性
  • 对用户定义类的实例,还能动态添加属性:obj.new_attr = 42
  • 注意:内置类型如 intstr 的实例不可变且不允许动态加属性,这是实现上的保护,不违背“一切皆对象”的原则

这个设计让 Python 灵活、一致、易于扩展,也是装饰器、元类、动态导入等高级特性的底层基础。不复杂但容易忽略。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>