গেটার এবং সেটার অনেক অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজে ডেটা এনক্যাপসুলেশনের নীতি নিশ্চিত করতে ব্যবহৃত হয়। এগুলাকে মিউটেটর মেথডও বলা হয়। ডেটা এনক্যাপসুলেশন বলতে ডেটা এবং সেটি ওপর অপারেট করার মেথডগুলোকে একসাথে বান্ডল করা বোঝায়। এই মেথডগুলো অবশ্যই গেটার ডেটা রিট্রিভ করার জন্য এবং সেটার ডেটা চেঞ্জ করার জন্য। এই নীতির അനুযায়ী, একটি ক্লাসের অ্যাট্রিবিউটগুলো প্রাইভেট করা হয় সেগুলো হাইড ও প্রোটেক্ট করার জন্য অন্যান্য কোড থেকে।
দুর্ভাগ্যবশত, এটি একটি ব্যাপক বিশ্বাস যে একটি প্রপার পাইথন ক্লাসে প্রাইভেট অ্যাট্রিবিউট এনক্যাপসুলেট করা উচিত গেটার এবং সেটার ব্যবহার করে। গেটার ও সেটার ব্যবহার করা সহজ এবং এলিগ্যান্ট নয়। পাইথনিক উপায় হচ্ছে প্রপার্টি বা প্রপার্টি সহ ক্লাস ব্যবহার করা। যে মেথডটি ভ্যালু পেতে ব্যবহৃত হয় সেটিকে "@property" দিয়ে ডেকোরেট করা হয়। যে মেথডটি সেটার হিসেবে কাজ করতে হবে সেটিকে "@x.setter" দিয়ে ডেকোরেট করা হয়।
উদাহরণ
গেটার এবং সেটার ব্যবহারের একটি উদাহরণ নিচে দেওয়া হলো
class P: def __init__(self,x): self.__set_x(x) def __get_x(self): return self.__x def __set_x(self, x): if x < 0: self.__x = 0 elif x > 1000: self.__x = 1000 else: self.__x = x x = property(__get_x, __set_x)