Getters và setters dùng trong nhiều ngôn ngữ OOP đảm bảo nguyên tắc data encapsulation (đóng gói dữ liệu). Còn gọi là mutator methods. Data encapsulation là gói gọn data với method thao tác data đó. Method getter lấy data, setter thay đổi data. Theo nguyên tắc này, attribute của class làm private để ẩn và bảo vệ khỏi code khác.
Tuy nhiên, niềm tin phổ biến rằng Python class proper nên encapsulate private attribute bằng getter/setter không đúng theo phong cách Pythonic. Cách Pythonic: dùng property hoặc class với property. Method getter decorate @property, method setter decorate @x.setter.
Ví dụ
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)