tgoop.com/pyHints/37
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