যদি কখনো এমন দরকার পরে যে একটা ফাংশনের ফাংশনালিটি একটু পরিবর্তন/পরিবর্ধন করা দরকার কিন্তু আমরা সেই ফাংশনের কোড পরিবর্তন করতে চাচ্ছি না। তখন ডেকোরেটর ব্যবহার করে আমরা সেই কাজটা করতে পারবো।
ধরুন আমাদের একটা সাধারণ ফাংশন আছে যার নাম print_raw এবং এটি খুব সাধারণ ভাবেই Clear Text এই বাক্যকে প্রিন্ট করে।
def print_raw(text):
print(text)
print_raw("Clear Text")
এখন আমরা চাই যখনই আমি কোথাও Clear Text বাক্যকে প্রিন্ট করবো সেখানে যেন এর আগে পরে একটু স্টাইল যুক্ত হয় — চিহ্ন দিয়ে। কিন্তু আবার চাচ্ছি না যে, print_raw ফাংশনটার কোড পরিবর্তন করতে।
def my_decorator(func):
def decorate():
print("--------------")
func()
print("--------------")
return decorate
এখন আমরা চাইলে আমাদের তৈরি যেকোনো নতুন ফাংশনের উপর একে আপ্লাই করতে পারি।
@my_decorator
def print_text():
print("Clear Text")
আউটপুট
--------------
Clear Text
--------------