Getter和Setter用于许多面向对象的编程语言中,以确保数据封装的原理。它们也称为mutator方法。数据封装被视为将数据与对这些数据进行操作的方法捆绑在一起。这些方法当然是用于获取数据的Getter和用于更改数据的设置器。根据该原理,将一个类的属性设为私有,以隐藏它们并保护它们免受其他代码的侵害。
不幸的是,人们普遍认为正确的Python类应该通过使用getter和setter封装私有属性。使用getter和setter并不容易且优雅。执行此操作的pythonic方法是使用properties或具有property的类。用于获取值的方法用“ @property”修饰。必须用作设置器的方法用“ @ x.setter”修饰。
使用getter和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)