Python內置對象如何才能更好的學習
Python內置對象和C結構體的對應,在某種程度上來說是一個對我們相當有用的。下面我們就看看如何才能更好的使用這個優點,希望大家有所收獲。首先需要談的是那些Python內置對象,這些都是C語言定義了的,當Python環境初始化后,這些對象便創建好了。
現在Python內置對象面向對象機制的對象和類型的抽象都已經說過了,接下來我們來看下在python中真實存在的對象在C語言實現的時候是怎么樣的呢?
以下是引用片段:
- PyAPI_DATA(PyTypeObject) PyType_Type; /* built-in '
type' */ PyAPI_DATA(PyTypeObject) PyBaseObject_Type;
/* built-in 'object' */
object對象在Python中是一個比較基礎的對象,它在C語言中對應的結構體是PyBaseObject_Type,從C語言中的這個命名我們可以大概知道這個類是一個類型對象。還有就是Python內置對象中的<type 'type'>在C語言中對應著PyType_Type
以下是引用片段:
- PyTypeObject PyType_Type = { PyObject_HEAD_INIT(&PyType
_Type) 0, /* ob_size */ "type", /* tp_name */ sizeof
(PyHeapTypeObject), /* tp_basicsize */ sizeof(PyMembe
rDef), /* tp_itemsize */ …… };
我們再看看比較具體的整數。
一個整數instance在C語言中的表示的結構體是PyIntObject,以下是引用片段:
- typedef struct {
- PyObject_HEAD
- long ob_ival;
- } PyIntObject;
也就是說通過這樣的結構體我們就可以在C語言的的運行時中指向Python的整數對象.。那么相應的我們Python的整數類型對象為,以下是引用片段:
- yTypeObject PyInt_Type = {
- PyObject_HEAD_INIT(&PyType_Type)
- 0,
- "int",
- sizeof(PyIntObject),
- …… };
Python內置對象自定義對象
當我們創建一個Python對象的時候,最終都是通過Python的底層來做的,當我們通過Python語言定義了自己的一個class A之后,Python首先根據你寫的代碼創建了一個A這樣的class對象(類對象),然后當你需要創建A的實例的時候,其實在Python內置對象的底層都是通過A這個Class對象進行創建的。
【編輯推薦】






















