3

組み込み型を理解するために types.py を調べていたところ、この GetSetDescriptorType に出会いました。Pythonのドキュメントから:

types.GetSetDescriptorType

FrameType.f_locals や array.array.typecode など、PyGetSetDef を使用して拡張モジュールで定義されたオブジェクトの型。このタイプは、オブジェクト属性の記述子として使用されます。プロパティタイプと同じ目的を持ちますが、拡張モジュールで定義されたクラス用です

私はプロパティの種類を理解していますが、これに頭を悩ませることはできませんでした。これを理解している人は、光を当てることができますか?

4

1 に答える 1

2

C を使用して Python モジュールを作成する場合は、C API を使用して新しい型を定義します。この API には、新しい型のすべての動作を指定するための多くの関数と構造体があります。

C API を使用して型のプロパティを指定する 1 つの方法は、構造体の配列を定義することですPyGetSetDef

static PyGetSetDef my_props[] = { /*... */ }

次に、型の初期化で配列を使用します (詳細については、この例を参照してください)。

次に、Python では、 を使用MyType.my_propertyすると の値がありtypes.GetSetDescriptorType、 を記述するときにプロパティの実際の値を解決するために使用されますmy_obj.my_property

そのため、このタイプは実装の詳細であり、あまり有用ではありません。

于 2013-02-02T09:30:24.270 に答える