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

You can invite up to 200 people from your contacts to join your channel as the next step. Select the users you want to add and click “Invite.” You can skip this step altogether. While the character limit is 255, try to fit into 200 characters. This way, users will be able to take in your text fast and efficiently. Reveal the essence of your channel and provide contact information. For example, you can add a bot name, link to your pricing plans, etc. bank east asia october 20 kowloon With the administration mulling over limiting access to doxxing groups, a prominent Telegram doxxing group apparently went on a "revenge spree." How to create a business channel on Telegram? (Tutorial)
from us


Telegram Python Hints
FROM American