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

পাইথনে অ্যাট্রিবিউট ও প্রপার্টির পার্থক্য

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

অ্যাট্রিবিউট vs প্রপার্টি

অ্যাট্রিবিউটপ্রপার্টি
সাধারণ ডেটা ভেরিয়েবল (name, age, height)গেটার/সেটার/ডিলিটার মেথড সহ 스페셜 অ্যাট্রিবিউট
সিয়रा এক্সেস: obj.attrএক্সেস সময় __get__, সেট সময় __set__, ডিলিট সময় __delete__ কল হয়
ভ্যালিডেশন/লজিক যোগ করা যায় নাএক্সেস/মডিফিকেশন সময় লজিক রান করা যায়

@property ডেকোরেটর ব্যবহার

class C:
    def __init__(self):
        self._x = None  # প্রাইভেট অ্যাট্রিবিউট (কনভেনশন)

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x        # গেটার

    @x.setter
    def x(self, value):
        self._x = value       # সেটার

    @x.deleter
    def x(self):
        del self._x           # ডিলিটার

obj = C()
obj.x = 10      # সেটার কল হয়
print(obj.x)    # গেটার কল হয় → 10
del obj.x       # ডিলিটার কল হয়

মূল পার্থক্য

যখন foo.bar এক্সেস করা হয়, পাইথন bar-কে খুঁজে বের করে। যদি bar-এর __get__, __set__, বা __delete__ মেথড থাকে, তবে এটি একটি প্রপার্টি (ডেসক্রিপ্টর প্রোটোকল)। তখন সাধারণ ভ্যালু রিটার্ন না করে সংশ্লিষ্ট মেথড কল হয়।

  1. HTML-এ id এবং name অ্যাট্রিবিউটের পার্থক্য কী?

  2. Tkinter(Python)-এ root.destroy() এবং root.quit() এর পার্থক্য কী?

  3. Python-এ tkinter এবং tkinter.ttk উইজেটের পার্থক্য কী?

  4. পাইথনে গ্লোবাল এবং লোকাল ভেরিয়েবলের পার্থক্য