آموزش پایتون - کلاس‌های پوششی

یک توابع (Function) در پایتون یک شیء مرتبه اول (First-order Object) است. یک تابع می‌تواند تابع دیگری را به عنوان آرگومان خود داشته باشد و تعریف تابع دیگری را در درون خود قرار دهد. این امر به تغییر رفتار یک تابع بدون تغییر دادن واقعی آن کمک می‌کند. به این‌گونه توابع، دکوراتور (Decorator) گفته می‌شود.

این قابلیت برای پوشش دادن یک کلاس (Wrapping a Class) نیز در دسترس است. این تکنیک برای مدیریت کلاس پس از نمونه‌سازی، از طریق قرار دادن منطق آن در داخل یک دکوراتور، استفاده می‌شود.

مثال

def decorator_function(Wrapped):
   class Wrapper:
      def __init__(self,x):
         self.wrap = Wrapped(x)
      def print_name(self):
         return self.wrap.name
   return Wrapper
   
@decorator_function
class Wrapped:
   def __init__(self,x):
      self.name = x
      
obj = Wrapped('TutorialsPoint')
print(obj.print_name())

در اینجا، Wrapped نام کلاسی است که قرار است پوشش داده شود. این کلاس به عنوان آرگومان به یک تابع پاس داده می‌شود. در داخل تابع، ما یک کلاس Wrapper داریم، رفتار آن را با صفت‌های (Attributes) کلاس پاس‌داده‌شده تغییر می‌دهیم و کلاس تغییریافته را برمی‌گردانیم. کلاس بازگردانده‌شده نمونه‌سازی می‌شود و اکنون می‌توان متد (Method) آن را فراخوانی کرد.

هنگامی که این کد را اجرا می‌کنید، خروجی زیر را تولید می‌کند −

TutorialsPoint

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.