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

“一切皆对象”是 Python 的核心设计哲学,意思是 Python 中所有值——包括数字、字符串、函数、模块、类,甚至类型本身——都有对应的对象,都具备对象的基本特征:有类型、有身份(内存地址)、有值,并且可以被赋值给变量、作为参数传递、作为返回值、存入容器等。
所有值都有类型和身份
每个值在 Python 中都是某个类的实例,哪怕是最简单的整数:
-
42是int类的实例,type(42)返回 -
"hello"是str类的实例,id("hello")能拿到它在内存中的唯一标识 - 就连
int、str这些类型本身,也是type类的实例:type(int)是
函数和类也是对象,可操作、可传递
这打破了传统编程中“代码”与“数据”的严格界限:
- 你可以把函数赋给变量:
my_func = len,然后调用my_func("abc") - 可以把函数作为参数传给另一个函数:
sorted([3,1,2], key=str)中的str就是对象 - 类本身也是对象,可以动态创建、修改或传递:
MyClass = type('MyClass', (), {})直接生成一个类
类型系统统一,没有“原始类型”例外
不像 Java 有 int(基本类型)和 Integer(对象)之分,Python 没有这种割裂:
立即学习“Python免费学习笔记(深入)”;
-
5不是“内建符号”,而是一个真实的int对象,拥有方法:5.bit_length()返回3 -
True和False是bool类的两个唯一实例,而bool本身继承自int(所以True == 1为True) - 甚至
None也是NoneType类的唯一实例,type(None)返回
运行时可检查、可修改(有限度)
因为一切都是对象,Python 提供了丰富的反射能力:
-
dir(x)列出对象所有属性和方法 -
getattr(obj, 'attr', default)动态获取属性 - 对用户定义类的实例,还能动态添加属性:
obj.new_attr = 42 - 注意:内置类型如
int、str的实例不可变且不允许动态加属性,这是实现上的保护,不违背“一切皆对象”的原则
这个设计让 Python 灵活、一致、易于扩展,也是装饰器、元类、动态导入等高级特性的底层基础。不复杂但容易忽略。










