Python对象的创建

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相关知识,请关注我们http://www.mobiletrain.org/

推荐阅读

    python的数据类型

    python的数据类型,数字,较大,数据,培训,变量,表示,字符串,赋值,常量,小数,1.

    Python内置函数

    Python内置函数,数字,函数,培训,位置,第一,代码,异常,数据,公式,序列,python

    Python的函数式

    Python的函数式,名称,术语,概念,培训,函数,变量,对象,参数,希腊字母,赋值,尽

    Python类和对象

    Python类和对象,代码,培训,对象,实例,定义,关键字,函数,问题,顶层,全名,刚接

    Python中的对象

    Python中的对象,数据,连续,代码,培训,概念,对象,内存,类型,初始化,静态,Pyth

    Python 里的hash()函数

    Python 里的hash()函数,系统,数据,信息,服务,状态,培训,标准,工程,函数,整

    python 报错信息汇总

    python 报错信息汇总,信息,情况,名字,培训,名称,字符,参数,原因,文件,样式,1

    Python集合类型

    Python集合类型,检测,位置,培训,元素,对象,实例,成员,操作,子集,类型,python