Python对象的创建

来源:千锋教育
发布时间:2023-11-06 10:45:37
分享

python会用两种方法创建对象,一种是泛型API(AOL:AbstractObjectLayer),可以应用在任何Python对象上,API内不会有机制确定最终调用哪个具体函数,比如PyObject_New(PyObject,&PyInt_Type)。另一种是类型相关API(COL:ConcreteObjectLayer),只能应用于具体类型的对象上,比如PyInt_FromLong(10)。

自定义对象在Python内部不可能存在COL,所以只能根据其类型对象来创建实例对象,这就需要PyTypeObject中的tp_new函数指针,如果是自定义对象,这个指针可能是空,那就通过PyTypeObject的tp_base找到类型对象的基类,再找tp_new指针,这个过程中会利用类型对象中记录的空间信息申请内存。对于Python中的任何一种变长对象,tp_itemsize这个域是必须设置的,tp_itemsize指明了由变长对象保存的元素的单位长度,所谓单位长度即是指一个对象在内存中的长度。这个tp_itemsize和ob_size共同决定了应该额外申请的内存的总大小是多少。

内建对象最终会使用COL完成创建工作。

new函数完成后,会执行init函数,前者类似于new操作符,后者类似于构造函数。

以上内容为大家介绍了Python对象的创建,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。https://www.mobiletrain.org/

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • Python之metaclass的原理和用法 metaclassmetaclass的英文直译过来就是元类,这既是一个概念也可以认为是Python当中的一个关键字,不管怎么理解,对它的内核含义并没有什么影响。我们可以不必纠结,就认为它是类的类的意思
  • Python之__init__和__new__的区别是什么 真假构造函数如果你去面试Python工程师的岗位,面试官问你,请问Python当中的类的构造函数是什么?你不假思索,当然是__init__啦!如果你这么回答,很有可能你就和offer无缘了。因为在Py
  • Python常用的高级用法之怎么动态创建类 元类是Python当中的高级用法,如果你之前从来没见过这个术语或者是没听说过这个概念,这是非常正常的,因为一方面它的使用频率不高,另外一方面就是它相对不太容易理解。以至于很多Python开发者都理解得
  • Python当中生成器和迭代器的使用 我当初第一次学到迭代器和生成器的时候,并没有太在意,只是觉得这是一种新的获取数据的方法。对于获取数据的方法而言,我们会一种就足够了。但是在我后来Python的使用以及TensorFlow等学习使用当中
  • Python工具库之collections collection在英文当中有容器的意思,所以顾名思义,这是一个容器的集合。这个库当中的容器很多,有一些不是很常用,本篇文章选择了其中最常用的几个,一起介绍给大家。defaultdictdefaul
  • Python装饰器 python中的装饰器,本质上就是一个高阶函数。你可能不太清楚高阶函数的定义,没关系,我们可以类比一下。在数学当中高阶导数,比如二次导数,表示导数的导数。那么这里高阶函数自然就是函数的函数,结合我们之