PYHINTS Telegram 37
Python Hints
بنظر شما توی این کد خروجی خط ۲۱ چی هست ؟ آیا می‌تونید راجب این رفتار توضیح هم بدید ؟ بحثی داشتم با یکی از دوستان راجب این مطلب که یاد مصاحبه مرحله دوم برای آمازون افتادم موضوع مربوط می‌شه به ۳-۴ سال پیش. سطح upper mid-level, senior python
همونطوری که احتمالا حدس زدید؛ خروجی خط ۲۱ :
@PyHints
هست.

اما توضیحاتش مهمتر از اینه که بگید خروجی چی هست :
توی پایتون یک موضوعی داریم به اسم
variable shadowing
اتفاقی که میوفته اینه که توی کد بالا به این موضوعی احترامی گذاشته نمی‌شه اگر name توی کد بالا یک property نبود قطعا متنی که توی خط ۱۹ بهش داده بودیم رو چاپ می‌کرد؛
حالا چرا property باعث شده که به variable shadowing احترام گذاشته نشه

توی پایتون یک موضوع دیگری هم وجود داره به اسم
Descriptor
که خودش ۲ مدل داره و توی کد بالا ما از data descriptor داریم استفاده می‌کنیم وقتی شما از property استفاده می‌کنید چه به صورت تابع چه بصورت decorator اون property در نهایت به صورت data descriptor تعریف میشه
پروتوکل data descriptor به این صورت تعریف میشه:
کلاسی در پایتون که شامل dunder method های :
__get__ and __set__ or __delete__
باشه که توی property هر ۳ مورد وجود داره

پایتون هم که باشعور وقتی متوجه میشه از پروتوکل data descriptor استفاده شده دیگه از __dict__ موجود برای instance اطلاعات نمی‌گیره بلکه
__get__
اون data descriptor رو صدا میزنه به همین دلیل هم خروجی کد بالا

@PyHints
هست.
👍18🤓4



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

همونطوری که احتمالا حدس زدید؛ خروجی خط ۲۱ :
@PyHints
هست.

اما توضیحاتش مهمتر از اینه که بگید خروجی چی هست :
توی پایتون یک موضوعی داریم به اسم
variable shadowing
اتفاقی که میوفته اینه که توی کد بالا به این موضوعی احترامی گذاشته نمی‌شه اگر name توی کد بالا یک property نبود قطعا متنی که توی خط ۱۹ بهش داده بودیم رو چاپ می‌کرد؛
حالا چرا property باعث شده که به variable shadowing احترام گذاشته نشه

توی پایتون یک موضوع دیگری هم وجود داره به اسم
Descriptor
که خودش ۲ مدل داره و توی کد بالا ما از data descriptor داریم استفاده می‌کنیم وقتی شما از property استفاده می‌کنید چه به صورت تابع چه بصورت decorator اون property در نهایت به صورت data descriptor تعریف میشه
پروتوکل data descriptor به این صورت تعریف میشه:
کلاسی در پایتون که شامل dunder method های :
__get__ and __set__ or __delete__
باشه که توی property هر ۳ مورد وجود داره

پایتون هم که باشعور وقتی متوجه میشه از پروتوکل data descriptor استفاده شده دیگه از __dict__ موجود برای instance اطلاعات نمی‌گیره بلکه
__get__
اون data descriptor رو صدا میزنه به همین دلیل هم خروجی کد بالا

@PyHints
هست.

BY Python Hints




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

View MORE
Open in Telegram


Telegram News

Date: |

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. Ng was convicted in April for conspiracy to incite a riot, public nuisance, arson, criminal damage, manufacturing of explosives, administering poison and wounding with intent to do grievous bodily harm between October 2019 and June 2020. Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. To delete a channel with over 1,000 subscribers, you need to contact user support According to media reports, the privacy watchdog was considering “blacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram.
from us


Telegram Python Hints
FROM American