跳转到主内容
极星编程网:以代码为星,赴技术山海!

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

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 没有这种割裂: Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载 立即学习 “ 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 灵活、一致、易于扩展,也是装饰器、元类、动态导入等高级特性的底层基础。不复杂但容易忽略。

相关文章