পাইথনে, সবকিছুই একটি বস্তু। এবং প্রতিটি বস্তুর বৈশিষ্ট্য এবং পদ্ধতি বা ফাংশন আছে। বৈশিষ্ট্যগুলি ডেটা ভেরিয়েবল দ্বারা বর্ণনা করা হয় যেমন নাম, বয়স, উচ্চতা ইত্যাদি।
প্রপার্টি হল বিশেষ ধরনের অ্যাট্রিবিউট যার গেটার, সেটার এবং ডিলিট পদ্ধতি আছে যেমন __get__, __set__ এবং __delete__ পদ্ধতি।
যাইহোক, পাইথনে একটি প্রপার্টি ডেকোরেটর রয়েছে যা একটি অ্যাট্রিবিউটে গেটার/সেটার অ্যাক্সেস প্রদান করে প্রপার্টিগুলি হল একটি বিশেষ ধরনের অ্যাট্রিবিউট। মূলত, যখন পাইথন নিম্নলিখিত কোডের মুখোমুখি হয়:
foo = SomeObject() print(foo.bar)
এটি foo তে বার দেখায় এবং তারপর বার পরীক্ষা করে দেখতে যে এটিতে একটি __get__, __set__, অথবা __delete__ method এবং যদি এটি করে তবে এটি একটি সম্পত্তি। যদি এটি একটি সম্পত্তি হয়, শুধু বার অবজেক্ট ফেরত দেওয়ার পরিবর্তে, এটি __get__ পদ্ধতিকে কল করবে এবং সেই পদ্ধতিটি যেটি ফেরত দেবে তা ফেরত দেবে।
পাইথনে, আপনি প্রপার্টি ফাংশন দিয়ে গেটার, সেটার এবং ডিলিট পদ্ধতি নির্ধারণ করতে পারেন। আপনি যদি শুধুমাত্র রিড প্রপার্টি চান, তাহলে আপনার পদ্ধতির উপরে একটি @property ডেকোরেটর যোগ করতে পারেন।
class C(object): def __init__(self): self._x = None #C._x is an attribute @property def x(self): """I'm the 'x' property.""" return self._x # C._x is a property This is the getter method @x.setter # This is the setter method def x(self, value): self._x = value @x.deleter # This is the delete method def x(self): del self._x