شیءهای توصیفگر¶
«توصیفگرها» اشیایی هستند که ویژگیای از یک شیء را توصیف میکنند. آنها در دیکشنری اشیاء نوع یافت میشوند.
-
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در پایتون هستند.
-
PyTypeObject PyWrapperDescr_Type¶
- قسمتی از ABI پایدار.
شیء نوع داده برای اشیای توصیفگر پوششی ایجادشده توسط
PyDescr_NewWrapper()وPyWrapper_New().توصیفگرهای پوششی به صورت داخلی برای نمایش متدهای ویژهای مانند
__repr__یا__add__استفاده میشوند که توسط جایگاههای نوع پیادهسازی شدهاند. این نوع در پایتون به صورتtypes.WrapperDescriptorTypeنمایش داده میشود.
-
PyObject *PyDescr_NewWrapper(PyTypeObject *type, struct wrapperbase *base, void *wrapped)¶
- مقدار بازگشتی: مرجع جدید.
یک توصیفگر پوششی جدید از نوع
PyWrapperDescr_Typeایجاد کنید.این تابع فقط برای استفادهی داخلی در نظر گرفته شده است؛ آن و APIهای مرتبط (
struct wrapperbaseو پرچمPyWrapperFlag_KEYWORDS) به دلایل سازگاری با نسخههای پیشین به صورت عمومی ارائه شدهاند.برای بستهبندی یک تابع C به
PyCMethod_New()مراجعه کنید.
-
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را همراه با یک استثنای تنظیمشده برمیگرداند.
-
PyDescr_TYPE(descr)¶
یک ارجاع امانتی به نوعی که توصیفگر descr به آن تعلق دارد، برگردانید. این مقدار در پایتون به عنوان
__objclass__قابل دسترسی است.descr باید یک شیء توصیفگر باشد که توسط یکی از توابع
PyDescr_New*ایجاد شده است (یک نمونه ازPyMethodDescr_Type،PyClassMethodDescr_Type،PyMemberDescr_Type،PyGetSetDescr_TypeیاPyWrapperDescr_Type). اگر توصیفگر ارسالشده نمونهای از یکی از این نوعها نباشد، رفتار نامشخص خواهد بود.
-
PyDescr_NAME(descr)¶
نام توصیفگر descr را به عنوان یک ارجاع امانتی به یک شیء
strبرگردانید. این مقدار در پایتون به عنوان__name__در دسترس است.descr باید یک شیء توصیفگر باشد که توسط یکی از توابع
PyDescr_New*ایجاد شده است. در غیر این صورت، رفتار نامشخص خواهد بود.
توصیفگرهای توکار¶
-
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را همراه با یک استثنای تنظیمشده برمیگرداند.