“دکوراتورها” در پایتون

دکوراتورها در پایتون

یکی از قدرتمندترین و پیشرفته ترین ویژگی های “برنامه نویسی شی گرا” در پایتون، “دکوراتورها” هستند. اما قبل از اینکه شما عمیقا به مبحث دکوراتورها بپردازید، نیاز داردید که برخی مطالب را پیشاپیش بدانید. برای برنامه نویسان سی پلاس پلاس و جاوا، تعریف توابع در داخل توابع، امر عجیب و ناشناخته ای است، اما پایتون امکان ایجاد توابع در درون توابع را فراهم می کند و توابع می توانند دارای آرگومان ورودی ای از جنس تابع باشند!. لطفا این امر را با بحث توابع بازگشتی (که در سی پلاس پلاس و جاوا و پایتون و … امکان پذیر است) اشتباه نگیرید. در توابع بازگشتی، یک تابع خودش را در تعریف خودش صدا می زند، اما در پایتون، شما می توانید یک تابع جدید را در داخل تعریف یک تابع ایجاد نمائید و خروجی یک تابع می تواند خود یک تابع دیگر باشد. این ویژگی خیلی زیباست و ابزار قدرتمندی را در اختیار برنامه نویسان حرفه ای قرار می دهد.

اما وقتی شما توابع را در داخل توابع تعریف می کنید، این گاهی اوقات می تواند گیج کننده باشد و خوانایی کد راحت نباشد. بنابراین، خالقان زبان برنامه نویسی پایتون، ایده “توابع در داخل توابع” را به یک ویژگی فشرده تر و زیباتر به نام “دکوراتور” انتقال دادند. دکوراتور با یک علامت “@” که قبل از تابعی که باید دکوریت شود، قرار می گیرد، تعریف می شود. برای درک بهتر موضوع، نگاهی به کد زیر بیاندازید.

ویژگی قدرتمند دیگری که از مفهوم دکوراتورها استخراج گردیده است، دکوراتور “@property” است. همانطور که ما قبلا از شی گرایی می دانیم، برای اعمال کپسوله سازی در کلاس ها، ما نیاز به متدهای “getter” و “setter” داریم. اما برخی مواقع، نوشتن این خطوط کد ممکن است با هدف اصلی پایتون، که خوانایی بالای کد است، مغایرت داشته باشد. لذا دکوراتور “@property”، که جزء سینکس های اصلی خود پایتون است، می توانید تنظیم متدهای “getter” و “setter” را به راحتی و خلاصه تر برای ما انجام دهد. برای درک بهتر مطلب، می توانید نگاهی به کد زیر بیاندازید.

اگر شما می خواهید بیشتر درباره برنامه نویسی شی گرا در پایتون یاد بگیرید، می توانید از کلاس های خصوصی و آنلاین من با قیمت مناسب بهره مند شوید. برای این امر می تواند از منو، تب “تماس با ما” برای من پیام بگذارید یا با همراه من (۰۹۱۲۴۹۰۸۳۷۲) تماس بگیرید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *