ソーススタック

 

 


/ *オブジェクトとタイプオブジェクトインタフェース* /

/ *
オブジェクトはヒープ上に割り当てられた構造体です。特別なルールはに適用されます
オブジェクトの使用は、それらが適切にガベージコレクトされていることを確認します。
オブジェクトは静的またはスタックに割り当てされることはありません。彼らがなければなりません
唯一の特殊なマクロと関数を介してアクセスします。(Typeオブジェクトは、
最初のルールには例外。標準タイプが表され
タイプ/クラスの統一に動作しますが静的に初期化型オブジェクト、
Pythonの2.2のために)あまりにもヒープに割り当てられたタイプのオブジェクトを持っていることを可能にしました。

オブジェクトが増減する「参照カウント」を持っています
オブジェクトへのポインタは、コピーまたは削除されます。とき参照カウント
ゼロに達した左のオブジェクトへの参照はありません、それはすることができ
ヒープから削除。

オブジェクトは、それが何を表すかを決定する「タイプ」を持ち、どのような種類
データのそれが含まれています。それが作成されたときに、オブジェクトの種類が固定されています。
タイプ自体がオブジェクトとして表現されています。オブジェクトが含まれています
対応するタイプのオブジェクトへのポインタ。型自体は、型を持っています
タイプ「タイプ」を表すオブジェクトを指すポインタ、どの
自分自身へのポインタが含まれています!)。

オブジェクトがメモリに周りのフロートはありません。一度オブジェクトが保持します割り当てられました
同じサイズとアドレス。可変サイズのデータ​​を保持しなければならないオブジェクト
オブジェクトの可変サイズの部品へのポインタを含めることができます。すべてではない
同じ型のオブジェクトは、同じサイズを持っています。しかし、サイズが変更することはできません。
割り当て後。(これらの制限はにそう言及しています
オブジェクトは、単純にポインタすることができます - オブジェクトを移動させることが必要となります
すべてのポインタを更新して、オブジェクトのサイズを変更することは必要であろう
他の目的は、右隣にあった場合、それを動かします。)

オブジェクトは、常にタイプ「PyObject *」のポインタを介してアクセスされています。
型「PyObjectは、」唯一の参照カウントを含む構造であります
そして、ポインタ型。オブジェクトに割り当てられた実際のメモリ
ポインタのみをキャストした後にアクセスすることができ、他のデータが含まれています
長い構造型へのポインタに。この長いタイプは、起動する必要があります
参照カウントと型のフィールドを持ちます。マクロPyObject_HEADはする必要があります
このために使用(将来の変化に適応するために)。実装
特定のオブジェクトタイプの適切にオブジェクトポインタをキャストすることができます
タイプとバック。

標準インターフェースは、アイテムの配列を含む目的のために存在します
オブジェクトが割り当てられている場合、その大きさが決定されます。
* /
 
 
 
python-3.7.4 \ object.h \含めます
 

おすすめ

転載: www.cnblogs.com/yuanjiangw/p/11574106.html