PYHINTS Telegram 336
Python Hints
قبل از اینکه بریم سراغ تصویر : یک مفهومی داریم توی پایتون به اسم Static Duck Typing حدس زدید دیگه تا الان ترکیبی هست از Static typing, duck typing استفاده‌اش؛ اجازه میده Interface رو طوری تعریف کنیم که کلاس‌های مختلفی رو بشه بجاش استفاده کرد. اما تصویر بالا؛…
تا اینجا می‌دونیم که وقتی صحبت از runtime check میشه گزینه اصلی Goose Typing هست اما ی مشکلی اینجا داره اگر من از goose typing استفاده کنم باید از MutableSequence هم Inherit کنم و همه‌ی کلاس‌هایی که ازین مورد میخوان استفاده کنند حتما باید
__delitem__

رو هم پیاده‌سازی کنند.
اگر اینترفیس شما ترکیبی از چند abc باشه چی ؟
اون موقع شاید مجبور باشید برای اینکار بیش از ۱۰ متد رو پیاده‌سازی کنید وقتی فقط ۵-۶ متد رو لازم داشتید.
راهکار
Static Protocol +
runtime_checkable


به کد تصویر دقت کنید؛ اول اینکه هر کلاسی از
typing.Protocol 

استفاده کنه میشه
Static Protocol 

و اینطوری type checker ها می‌تونند بررسی کنند.(توی سورس کدهای مختلف هم نگاه کنید فقط تا همین بخش استفاده می‌شه و کسی سراغ runtime_checkable نمیره معمولا اما بعنوان یک برنامه‌نویس پایتون شما باید همه ابزارها رو بشناسید)
برگردیم سراغ مثال خودمون الان که من میخوام فقط همون ۳ متد رو داشته باشه میام یک کلاس بدون پیاده‌سازی میسازم به اسم
SupportMutSeq
و به راحتی با isinstance می‌تونم بررسی کنم که کلاس‌های دیگه از این Interface پیروی می‌کنند یا خیر بدون اینکه هیچ برنامه نویسی یا حتی خودم رو مجبور کنم که __delitem__ پیاده‌سازی بشه.

مثال سمت چپ هم از خود داکیومنت پایتون آوردم. چون ساده‌تر بود ( بخصوص Closable )
👍23❤‍🔥3



tgoop.com/pyHints/336
Create:
Last Update:

تا اینجا می‌دونیم که وقتی صحبت از runtime check میشه گزینه اصلی Goose Typing هست اما ی مشکلی اینجا داره اگر من از goose typing استفاده کنم باید از MutableSequence هم Inherit کنم و همه‌ی کلاس‌هایی که ازین مورد میخوان استفاده کنند حتما باید

__delitem__

رو هم پیاده‌سازی کنند.
اگر اینترفیس شما ترکیبی از چند abc باشه چی ؟
اون موقع شاید مجبور باشید برای اینکار بیش از ۱۰ متد رو پیاده‌سازی کنید وقتی فقط ۵-۶ متد رو لازم داشتید.
راهکار
Static Protocol +
runtime_checkable


به کد تصویر دقت کنید؛ اول اینکه هر کلاسی از
typing.Protocol 

استفاده کنه میشه
Static Protocol 

و اینطوری type checker ها می‌تونند بررسی کنند.(توی سورس کدهای مختلف هم نگاه کنید فقط تا همین بخش استفاده می‌شه و کسی سراغ runtime_checkable نمیره معمولا اما بعنوان یک برنامه‌نویس پایتون شما باید همه ابزارها رو بشناسید)
برگردیم سراغ مثال خودمون الان که من میخوام فقط همون ۳ متد رو داشته باشه میام یک کلاس بدون پیاده‌سازی میسازم به اسم
SupportMutSeq
و به راحتی با isinstance می‌تونم بررسی کنم که کلاس‌های دیگه از این Interface پیروی می‌کنند یا خیر بدون اینکه هیچ برنامه نویسی یا حتی خودم رو مجبور کنم که __delitem__ پیاده‌سازی بشه.

مثال سمت چپ هم از خود داکیومنت پایتون آوردم. چون ساده‌تر بود ( بخصوص Closable )

BY Python Hints




Share with your friend now:
tgoop.com/pyHints/336

View MORE
Open in Telegram


Telegram News

Date: |

As five out of seven counts were serious, Hui sentenced Ng to six years and six months in jail. While some crypto traders move toward screaming as a coping mechanism, many mental health experts have argued that “scream therapy” is pseudoscience. Scientific research or no, it obviously feels good. fire bomb molotov November 18 Dylan Hollingsworth yau ma tei With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. Telegram users themselves will be able to flag and report potentially false content.
from us


Telegram Python Hints
FROM American