কম্পিউটার টিউটোরিয়াল

পাইথন ফাংশন অ্যাট্রিবিউট (Function Attributes)

পাইথনে সবকিছু অবজেক্ট, ফাংশনও অবজেক্ট। তাই ফাংশনের অ্যাট্রিবিউট থাকতে পারে এবং ডাইনামিক্যালি যোগ/পড়া/মডিফাই করা যায়।

বিল্ট-ইন অ্যাট্রিবিউট

  • __name__ — ফাংশন নাম
  • __doc__ — ডকস্ট্রিং
  • __module__ — মডিউল নাম
  • __annotations__ — টাইপ হিন্ট
  • __code__ — কোড অবজেক্ট (বাইটকোড, কনস্ট্যান্ট, ভেরিয়েবল নাম)
  • __defaults__ — ডিফল্ট আর্গামেন্ট ভ্যালু টাপল
  • __kwdefaults__ — কিওয়ার্ড-অনলি ডিফল্ট
  • __closure__ — ক্লোজার সেল টাপল (যদি থাকে)
  • __dict__ — ইউজার-ডিফাইনড অ্যাট্রিবিউট সংরক্ষণ

অ্যাট্রিবিউট সেট/গেট

def foo():
    pass

# ডট নোটেশন
foo.age = 23
foo.name = "John Doe"

# setattr/getattr
setattr(foo, 'gender', 'male')
print(getattr(foo, 'age'))      # 23
print(foo.gender)               # male
print(foo.name)                 # John Doe
print(foo.age)                  # 23

ব্যবহার ক্ষেত্র

  • মেটাডেটা সংরক্ষণ (ভের্সন, লেখক, ডিপ্রিকেশন নোট)
  • রানটাইম কনফিগারেশন
  • ডেকোরেটর স্টেট ট্র্যাকিং
  • টেস্টিং/মকিং টুলে ফাংশন ট্যাগিং

সতর্কতা

ফাংশন অ্যাট্রিবিউট মিউটেবল, তাই শেয়ার্ড রেফারেন্সের মাধ্যমে অপ্রত্যাশিত পরিবর্তন হতে পারে। ক্লাস বা ডেটা ক্লাস ব্যবহার করলে আরও ক্লিন থাকে।

  1. পাইথনে নেমস্পেস কী?

  2. পাইথন ফাংশনে বাধ্যতামূলক আর্গামেন্ট (Required Arguments)

  3. পাইথনে অ্যানোনিমাস ফাংশন (Anonymous Function) কী?

  4. পাইথন ফাংশন কি অবজেক্ট?