python推荐源码阅读_Python源码阅读小结

勤奋的我回来了, 哈哈哈.

很久没有更新了, 我们来把之前学到的Python源码相关再来过一遍吧. 也暂时作为这一段学习的小收尾.

##原初 - 对象的基石

我们最一开始了解到的, 就是Python对象的构成基石 - PyObject. 并且在之后对其他对象和基础虚拟机的简单了解过程中, 渐渐的体会到了这个设计的巧妙. 我们来回顾一下.

起初我们先拿的intObject开的刀, 这是一个不可变长对象只需要一个int类型的变量基本就可以解决问题了, 再来看一下这个对象:

1

2

3

4typedef struct {

PyObject_HEAD

long ob_ival;

} PyIntObject;

看到那个熟悉的头部宏了, 这个宏的设计使得所有的对象都可以使用*PyObject指针来进行指向. 这个神奇的头部还包括了对象的类型信息和引用计数. 而另外一种对应列表字典字符串的对象, 就是可变长对象了, 这种对象唯一的不同就在他的头部中加了一个表示变量长度的量. 接着我们向内部深入了一层, 看到了Python表示类型的结构体. 这个类型结构体其实就是Python类的实现.

对象

通过在后来对一些典型对象的了解, 我们看到了两种创建对象的方式, 一种是直接使用C API, 直接传入PyObject和对应的TypeObject指针来自动选择创建函数, 另一种是使用类型相关的创建函数, 每一种函数都是单独实现的, 并且是存在在每一个对象实现中的.

那么对于用户自定义的类, 创建方式就是通过base指针指向的一个基本类来作为对象创建的, 实际上呢. 创建的函数还是new. 只不过我们自定义的类new函数指针指向的是NULL, 但是通过base指向的基本类是有new函数的, 接着就根据这个类中记录的大小来进行内存申请, 接着调用init函数进行初始化就完事了.

接着我们又了解到了Python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值