前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python内核源码解析与C/CPP-API拓展编程(二)类型对象

Python内核源码解析与C/CPP-API拓展编程(二)类型对象

作者头像
Pulsar-V
发布2019-04-18 14:37:54
4490
发布2019-04-18 14:37:54
举报
文章被收录于专栏:Pulsar-V

未完结

类型对象:

在上一篇中我们了解到了 PyObject 这个结构只有两个内容:一个引用计数, 一个类型信息. 但是在现实的编程过程中缺失了一些去区别python每一个类型的信息,比如a=1、b=[1,2,3], 结构体的引用计数为1, 类型为整型和list型但是没有对1 和变量名 a 、[1,2,3]和变量b的表达

这说明,了PyObject 仅仅是对象的共有的部分, 在使用上还需要其他的定义

我们在学习python的过程中,比较经常听到的一句话叫做 ,python处处皆对象。这是对于python对象模型的高度概括的描述。Python中的变量,实际上是一个名字,指向所引用的对象。Python中有“名字空间”的概念,这类似于其他编程语言中的作用域。在python中,名字空间底层由一个dict实现,变量名就是字典中的键,而变量引用的对象就是字典中键对应的值。 在上一篇中我们知道PyObject 这个结构只有两个内容:一个引用计数, 一个类型信息. 似乎少了一些"内容", 比方说python代码中 a = 1 , 结构体的引用计数为1, 类型为整型, 却没有保存 1 和变量名 a .

这样说明, PyObject 仅仅是对象的共有的部分, 在使用上还需要"其他的内容".

那么现在我们知道,不同于其他的语言,python中的整数,布尔值,字符串等类型的变量均是一个对象而不是简单的值。更进一步的,python中的所有语法元素,全部都是对象。函数是函数对象,模块是模块对象,最特殊的是,对象的类型也是一个对象。 Python中的面向对象机制与java等语言,所有的类型默认继承自基类object,或者某个object的派生类型。但是由于在python中类型也是一个对象,所以包含基类object在内的所有类型,都是对象实例。区别于普通对象,我们姑且把描述类型的对象叫做 类对象。所有类对象的类型被叫做元类(metaclass),元类默认是一个type类对象,或者某个继承自type的类对象。最后,type类对象的类型是type自身。

定长对象与变长对象

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 类型对象:
  • 定长对象与变长对象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档