شیءهای توصیف‌گر

«توصیف‌گرها» اشیایی هستند که ویژگی‌ای از یک شیء را توصیف می‌کنند. آن‌ها در دیکشنری اشیاء نوع یافت می‌شوند.

PyTypeObject PyProperty_Type
قسمتی از ABI پایدار.

شیء نوع برای نوع‌های توصیف‌گر توکار.

PyObject *PyDescr_NewGetSet(PyTypeObject *type, struct PyGetSetDef *getset)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک توصیف‌گر دریافت-تنظیم (get-set) جدید برای نوع توسعه‌ای type از ساختار PyGetSetDef با نام getset می‌سازد.

توصیف‌گرهای دریافت-تنظیم (get-set) ویژگی‌هایی را در دسترس قرار می‌دهند که به‌جای ذخیره‌شدن مستقیم در نمونه، توسط توابع getter و setter زبان C پیاده‌سازی شده‌اند. این همان نوع توصیف‌گری است که برای ورودی‌های tp_getset ایجاد می‌شود و در پایتون به‌صورت یک شیء types.GetSetDescriptorType ظاهر می‌شود.

در صورت موفقیت، یک ارجاع قوی به توصیف‌گر برمی‌گرداند. در صورت شکست، NULL همراه با یک استثنای تنظیم‌شده برمی‌گرداند.

PyObject *PyDescr_NewMember(PyTypeObject *type, struct PyMemberDef *member)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک توصیف‌گر عضو جدید برای نوع توسعه‌ای type از ساختار PyMemberDef به نام member ایجاد می‌کند.

توصیف‌گرهای عضو، فیلدهای موجود در ساختار C نوع را به‌عنوان ویژگی‌های پایتون در دسترس قرار می‌دهند. این همان نوع توصیف‌گری است که برای ورودی‌های tp_members ایجاد می‌شود و در پایتون به‌صورت شیء types.MemberDescriptorType ظاهر می‌شود.

در صورت موفقیت، یک ارجاع قوی به توصیف‌گر برمی‌گرداند. در صورت شکست، NULL همراه با یک استثنای تنظیم‌شده برمی‌گرداند.

PyTypeObject PyMemberDescr_Type
قسمتی از ABI پایدار.

شیء نوع برای اشیاء توصیف‌گر عضو که از ساختارهای PyMemberDef ایجاد می‌شوند. این توصیف‌گرها فیلدهای یک ساختار C را به‌عنوان ویژگی‌هایی روی یک نوع در دسترس قرار می‌دهند و متناظر با اشیاء types.MemberDescriptorType در پایتون هستند.

PyTypeObject PyGetSetDescr_Type
قسمتی از ABI پایدار.

شیء نوع برای اشیای توصیف‌گر get/set که از ساختارهای PyGetSetDef ایجاد می‌شوند. این توصیف‌گرها ویژگی‌هایی را پیاده‌سازی می‌کنند که مقدار آن‌ها توسط توابع getter و setter زبان C محاسبه می‌شود و برای بسیاری از ویژگی‌های انواع توکار به کار می‌روند. آن‌ها معادل اشیای types.GetSetDescriptorType در پایتون هستند.

PyObject *PyDescr_NewMethod(PyTypeObject *type, struct PyMethodDef *meth)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک توصیف‌گر متد جدید برای نوع توسعه‌ای type از ساختار PyMethodDef به نام meth ایجاد کنید.

توصیف‌گرهای متد، توابع C را به‌صورت متدهایی روی یک نوع در دسترس قرار می‌دهند. این همان نوع توصیف‌گری است که برای ورودی‌های tp_methods ایجاد می‌شود و در پایتون به‌صورت شیء types.MethodDescriptorType ظاهر می‌شود.

در صورت موفقیت، یک ارجاع قوی به توصیف‌گر برمی‌گرداند. در صورت شکست، NULL همراه با یک استثنای تنظیم‌شده برمی‌گرداند.

PyTypeObject PyMethodDescr_Type
قسمتی از ABI پایدار.

شیء نوع برای اشیاء توصیف‌گر متد که از ساختارهای PyMethodDef ایجاد شده‌اند. این توصیف‌گرها توابع C را به‌عنوان متدهایی روی یک نوع در دسترس قرار می‌دهند و معادل اشیاء types.MethodDescriptorType در پایتون هستند.

struct wrapperbase

یک دربرگیرنده‌ی جایگاه را توصیف می‌کند که توسط PyDescr_NewWrapper() استفاده می‌شود.

هر رکورد wrapperbase نام قابل‌مشاهده در پایتون و فراداده‌ی متد ویژه‌ای را که توسط یک جایگاه نوع پیاده‌سازی شده است، به همراه تابع پوششی‌ای که برای تطبیق آن جایگاه با قرارداد فراخوانی پایتون استفاده می‌شود، ذخیره می‌کند.

PyObject *PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *base, void *wrapped)
مقدار بازگشتی: مرجع جدید.

یک توصیف‌گر پوششی جدید برای نوع توسعه‌ای type از ساختار wrapperbase به نام base و اشاره‌گر تابع جایگاه دربرگرفته‌شده به نام wrapped می‌سازد.

توصیف‌گرهای پوششی، متدهای ویژه‌ای را که توسط جایگاه‌های نوع پیاده‌سازی شده‌اند، در دسترس قرار می‌دهند. این همان نوع توصیف‌گری است که سی‌پایتون برای متدهای ویژه‌ی مبتنی بر جایگاه مانند __repr__ یا __add__ ایجاد می‌کند و در پایتون به‌صورت یک شیء types.WrapperDescriptorType ظاهر می‌شود.

در صورت موفقیت، یک ارجاع قوی به توصیف‌گر برمی‌گرداند. در صورت شکست، NULL همراه با یک استثنای تنظیم‌شده برمی‌گرداند.

PyTypeObject PyWrapperDescr_Type
قسمتی از ABI پایدار.

شیء نوع برای اشیاء توصیف‌گر پوششی که توسط PyDescr_NewWrapper() و PyWrapper_New() ایجاد می‌شوند. توصیف‌گرهای پوششی به‌طور داخلی برای در دسترس قرار دادن متدهای ویژه‌ای که از طریق ساختارهای پوششی پیاده‌سازی شده‌اند استفاده می‌شوند و در پایتون به‌صورت اشیاء types.WrapperDescriptorType ظاهر می‌شوند.

PyObject *PyDescr_NewClassMethod(PyTypeObject *type, PyMethodDef *method)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک توصیف‌گر متد کلاس جدید برای نوع توسعه‌ای type از ساختار PyMethodDef به نام method ایجاد می‌کند.

توصیف‌گرهای متد کلاس، متدهای C را نمایان می‌کنند که هنگام دسترسی، کلاس را به جای نمونه دریافت می‌کنند. این همان نوع توصیف‌گری است که برای ورودی‌های METH_CLASS در tp_methods ایجاد می‌شود و در پایتون به صورت شیء types.ClassMethodDescriptorType ظاهر می‌شود.

در صورت موفقیت، یک ارجاع قوی به توصیف‌گر برمی‌گرداند. در صورت شکست، NULL همراه با یک استثنای تنظیم‌شده برمی‌گرداند.

int PyDescr_IsData(PyObject *descr)

اگر شیء توصیف‌گر descr یک ویژگی داده‌ای را توصیف کند، مقدار نا‌صفر را برمی‌گرداند و اگر متدی را توصیف کند، 0 را برمی‌گرداند. descr باید یک شیء توصیف‌گر باشد؛ هیچ بررسی خطایی انجام نمی‌شود.

PyObject *PyWrapper_New(PyObject *d, PyObject *self)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک شیء پوششی مقید جدید از توصیف‌گر پوششی d و نمونه self ایجاد کنید.

این، شکل مقیدِ یک توصیف‌گر پوششی (wrapper descriptor) است که توسط PyDescr_NewWrapper() ایجاد شده است. سی‌پایتون این اشیاء را زمانی ایجاد می‌کند که از طریق یک نمونه به یک پوشش‌دهنده جایگاه (slot wrapper) دسترسی پیدا شود، و آن‌ها در پایتون به‌صورت اشیاء types.MethodWrapperType ظاهر می‌شوند.

در صورت موفقیت، یک ارجاع قوی به شیء پوششی برمی‌گرداند. در صورت شکل، NULL را همراه با یک استثنای تنظیم‌شده برمی‌گرداند.

توصیف‌گرهای توکار

PyTypeObject PySuper_Type
قسمتی از ABI پایدار.

شیء نوع برای اشیای super. این همان شیء super در لایه‌ی پایتون است.

PyTypeObject PyClassMethod_Type

نوع اشیای متد کلاس. این همان شیء classmethod در لایه پایتون است.

PyTypeObject PyClassMethodDescr_Type
قسمتی از ABI پایدار.

شیء نوع برای اشیاء توصیف‌گر متد کلاس در سطح C. این همان نوع توصیف‌گرهایی است که برای classmethod() تعریف‌شده در نوع‌های توسعه‌ای C ایجاد می‌شوند و با اشیاء types.ClassMethodDescriptorType در پایتون مطابقت دارد.

PyObject *PyClassMethod_New(PyObject *callable)

یک شیء جدید classmethod می‌سازد که callable را در بر می‌گیرد. callable باید یک شیء فراخوانی‌پذیر باشد و نباید NULL باشد.

در صورت موفقیت، این تابع یک ارجاع قوی به یک توصیف‌گر جدید متد کلاس برمی‌گرداند. در صورت شکست، این تابع NULL را همراه با یک استثنای تنظیم‌شده برمی‌گرداند.

PyTypeObject PyStaticMethod_Type

نوع اشیاء متد ایستا. این همان شیء staticmethod در لایه‌ی پایتون است.

PyObject *PyStaticMethod_New(PyObject *callable)

یک شیء staticmethod جدید ایجاد می‌کند که callable را دربر می‌گیرد. callable باید یک شیء فراخوانی‌پذیر باشد و نباید NULL باشد.

در صورت موفقیت، این تابع یک ارجاع قوی به توصیف‌گر جدید متد ایستا برمی‌گرداند. در صورت شکست، این تابع NULL را همراه با یک استثنای تنظیم‌شده برمی‌گرداند.