गेटर और सेटर का उपयोग कई ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं में डेटा एनकैप्सुलेशन के सिद्धांत को सुनिश्चित करने के लिए किया जाता है। इन्हें म्यूटेटर मेथड्स के रूप में भी जाना जाता है। डेटा एनकैप्सुलेशन को उन मेथड्स के साथ डेटा के बंडलिंग के रूप में देखा जाता है जो उस डेटा पर काम करते हैं। ये मेथड्स निश्चित रूप से डेटा प्राप्त करने के लिए गेटर और डेटा बदलने के लिए सेटर हैं। इस सिद्धांत के अनुसार, क्लास के एट्रिब्यूट्स को अन्य कोड से छिपाने और बचाने के लिए प्राइवेट बनाया जाता है।
दुर्भाग्य से, यह व्यापक विश्वास है कि एक उचित पायथन क्लास को गेटर और सेटर का उपयोग करके प्राइवेट एट्रिब्यूट्स को एनकैप्सुलेट करना चाहिए। गेटर और सेटर का उपयोग करना आसान और सुंदर नहीं है। इसे करने का पायथनिक तरीका प्रॉपर्टीज़ या प्रॉपर्टी वाली क्लास का उपयोग करना है। एक मेथड जिसका उपयोग मान प्राप्त करने के लिए किया जाता है, उसे "@property" से सजाया जाता है। जिस मेथड को सेटर के रूप में कार्य करना होता है, उसे "@x.setter" से सजाया जाता है।
उदाहरण
गेटर और सेटर का उपयोग करने का एक उदाहरण इस प्रकार है:
class P:\n def __init__(self, x):\n self.__set_x(x)\n def __get_x(self):\n return self.__x\n def __set_x(self, x):\n if x < 0:\n self.__x = 0\n elif x > 1000:\n self.__x = 1000\n else:\n self.__x = x\n x = property(__get_x, __set_x)