手写 Python 虚拟机
海纳
华为资深编译专家,原 Huawei JDK 团队负责人
1199 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 22 讲/共 28 讲
导学|直播加餐:三小时掌握C++ (3讲)
手写 Python 虚拟机
15
15
1.0x
00:00/00:00
登录|注册

18|类型对象:虚拟机如何识别对象的类型?

你好,我是海纳。
到目前为止,我们已经实现了 Python 虚拟机中最重要的四个基本类型,也就是整数、字符串、列表和字典。为了实现这些基本类型,我们已经完成了很多类和对象的相关机制。其中包括打印、比较等常规的通用操作,也包括对数据元素的增删查改,以及排序、遍历等操作。
接下来的三节课,我们准备实现完备的对象系统,从而实现面向对象编程的大部分能力。前边的课程,每一段代码都能实现一个具体的功能,但从这一节课开始,内容会变得有点抽象。如果你学一遍不能理解的话,也不用灰心,可以静下心来多读几遍,想一想如果这个特性让你自己设计还有没有更好方法。慢慢的你就能理解了。
面向对象编程这一部分包括自定义类型、运行时判断对象类型、继承、函数和操作符重载等特性。这一节课我们先从类型说起。

实现类型对象

从刚开始学习编程的时候,我们就一直在和类型打交道。例如,我们说一个整型变量,其实就是指某个变量,它的类型是整型。
不同语言对于类型的处理非常不一样。有的语言是静态编译阶段决定的,运行时不能再修改,有的语言则支持运行时修改变量的类型。有的语言不需要程序员指定变量类型,还有的语言有复杂的类型推断系统帮助程序员简化开发。总之,每种语言对自己的类型系统都有独到的设计。那 Python 中的类型是如何设计的呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

1. Python虚拟机中实现了最重要的四个基本类型:整数、字符串、列表和字典。 2. 实现了类型对象的内建表,使得虚拟机可以正确执行print(list)等语句。 3. 实现了公共基类 object,为后续功能的实现做准备。 4. 实现了 TypeObject,每一个 Klass 都有一个对应的 TypeObject,完善了类的继承机制。 5. 实现了通过类型创建对象的能力,通过类型对象创建对象的功能。 6. 对象系统的重构工作基本完成,包括整数、字符串、列表和字典。 7. 实现了继承体系,所有的 Python 对象都是 object 的派生类。 8. 实现了 isinstance 方法,用于检查一个对象是否是某一种类型的实例。 9. 实现了 type 函数,用于返回一个对象的类型。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手写 Python 虚拟机》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)