Python对象体系深入分析(2)
PyObject_HEAD
long ob_ival;
} PyIntObject;
也就是说通过这样的结构体我们就可以在C语言的的运行时中指向Python的整数对象.
那么相应的我们Python的整数类型对象为
PyObject_HEAD_INIT(&PyType_Type)
0,
"int",
sizeof(PyIntObject),
……
};
4.自定义对象
当我们创建一个Python对象的时候,最终都是通过Python的底层来做的,
当我们通过Python语言定义了自己的一个class A之后,Python首先根据你写的代码创建了一个A这样的class对象(类对象),然后当你需要创建A的实例的时候,其实在Python的底层都是通过A这个Class对象进行创建的。
二.Python视角中的对象体系
在单纯的Python的世界中,一切都是对象.这些对象可以分为三类,
metaclasses,classes,instance
其中classes又可以分为内置的type和用户自定义的class
下面我们通过一张图片来作详细的说明
注:
其中C的定义的方式如下(python 中继承于某类直接写在类名后面的括号中):
......
其中实线表示 is-kind-of 的关系 ,虚线表示is-instance-of的关系.
查看当前classes对象(instances对象没有__bases__属性)的基类的时候,可以用过classes_name.__bases__进行查看,其值为一个Tuple元组(Python支持多继承).
查看当前对象的类型的方法是object_name.__class__
我们可以通过一些测试来证实上面的图:
type为所有类的类。
希望本文所述对大家的Python程序设计有所帮助。