डेटा एनकैप्सुलेशन के सिद्धांत को सुनिश्चित करने के लिए कई ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग भाषाओं में गेटर्स और सेटर्स का उपयोग किया जाता है। उन्हें म्यूटेटर विधियों के रूप में भी जाना जाता है। डेटा इनकैप्सुलेशन को इन डेटा पर काम करने वाली विधियों के साथ डेटा के बंडल के रूप में देखा जाता है। ये विधियाँ निश्चित रूप से डेटा प्राप्त करने के लिए गेट्टर हैं और डेटा को बदलने के लिए सेटर हैं। इस सिद्धांत के अनुसार, एक वर्ग की विशेषताओं को अन्य कोड से छिपाने और उनकी रक्षा करने के लिए निजी बना दिया जाता है।
दुर्भाग्य से, यह व्यापक धारणा है कि एक उचित पायथन वर्ग को गेटर्स और सेटर्स का उपयोग करके निजी विशेषताओं को समाहित करना चाहिए। गेटर्स और सेटर्स का उपयोग करना आसान और सुरुचिपूर्ण नहीं है। ऐसा करने का पाइथोनिक तरीका गुण या संपत्ति वाले वर्ग का उपयोग करना है। एक विधि जिसका उपयोग मूल्य प्राप्त करने के लिए किया जाता है उसे "@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)