Python 中“一切皆对象”到底意味着什么?
技术百科
舞姬之光
发布时间:2026-01-19
浏览: 次 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 没有这种割裂:
-
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 灵活、一致、易于扩展,也是装饰器、元类、动态导入等高级特性的底层基础。不复杂但容易忽略。
# 都是
# 它在
# 这是
# 都有
# 不像
# 你可以
# 还能
# python
# 均为
# default
# 对象
# java
# int
# class
# 字符串
# 继承
# len
# bool
# Integer
# 就连
# 一切皆
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win11怎么用设置清理回收站_Win11设置清理
- 如何在Mac上搭建Golang开发环境_使用Hom
- 如何使用Golang实现云原生应用弹性伸缩_自动应
- 如何使用Golang log设置日志输出格式_Go
- Win11怎么更改鼠标指针方案_Windows11
- Win11相机打不开提示错误怎么修_相机权限开启与
- 如何关闭Win10自动更新更新_Win10系统自动
- Win11怎么关闭防火墙通知_屏蔽Win11安全中
- mac怎么安装pip_MAC Python pip
- Win10如何卸载预装Edge扩展_Win10卸载
- VSC怎么在PHP中调试MySQL_数据库交互排查
- Mac电脑进水了怎么办_MacBook进水后紧急处
- Win11怎么开启游戏模式_Windows11优化
- php本地部署后session无法保存_sessi
- php怎么捕获异常_trycatch结构处理运行时
- 如何使用Golang实现容器健康检查_监控和自动重
- c++协程和线程的区别 c++异步编程模型对比【核
- Windows怎样关闭桌面弹窗广告_Windows
- 如何使用Golang实现Web表单数据绑定_自动映
- php能控制zigbee模块吗_php通过串口与c
- Mac如何备份到iCloud_Mac桌面与文稿文件
- 如何使用正则表达式批量替换重复的“-”模式为固定字
- Win10怎么创建桌面快捷方式 Win10为应用创
- Win11怎么硬盘分区 Win11新建磁盘分区详细
- C++友元类使用场景_C++类间协作设计方式讲解
- Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱
- Win11怎么设置默认图片查看器_Windows1
- Win11系统占用空间大怎么办 Win11深度瘦身
- Windows10怎样设置家长控制_Windows
- 如何使用Golang实现跨域请求支持_Golang
- c++的位运算怎么用 与、或、异或、移位操作详解【
- C++中的协变与逆变是什么?C++函数指针与返回类
- 如何在Golang中操作嵌套切片指针_Golang
- Win11怎么更改任务栏位置_修改注册表将Win1
- Windows如何拦截腾讯视频广告_Windows
- Win11怎么关闭专注助手 Win11关闭免打扰模
- c# 服务器GC和工作站GC的区别和设置
- php高频调试功能有哪些_php常用调试函数与工具
- mac怎么退出id_MAC退出iCloud账号与A
- php中$this和::能混用吗_对象与静态作用域
- Windows10怎么查看硬件信息_Windows
- Win11怎么关闭边缘滑动手势_Windows11
- C#怎么使用委托和事件 C# delegate与e
- php查询数据怎么分组_groupby分组查询配合
- Python异步编程高级项目教程_asyncio协
- Go 中实现 Python urllib.quot
- Win11任务栏怎么放到顶部_Win11修改任务栏
- Windows10如何更改系统字体大小_Win10
- php订单日志怎么记录发货_php记录订单发货操作
- 如何使用Golang实现错误包装与传递_Golan

QQ客服