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: |

Telegram desktop app: In the upper left corner, click the Menu icon (the one with three lines). Select “New Channel” from the drop-down menu. How to Create a Private or Public Channel on Telegram? As of Thursday, the SUCK Channel had 34,146 subscribers, with only one message dated August 28, 2020. It was an announcement stating that police had removed all posts on the channel because its content “contravenes the laws of Hong Kong.” Invite up to 200 users from your contacts to join your channel Telegram message that reads: "Bear Market Screaming Therapy Group. You are only allowed to send screaming voice notes. Everything else = BAN. Text pics, videos, stickers, gif = BAN. Anything other than screaming = BAN. You think you are smart = BAN.
from us


Telegram Python Hints
FROM American