Python中的Getter和Setter
为了进行数据封装,大多数面向对象的语言都使用getter和setters方法。这是因为我们要对其他类隐藏对象类的属性,以便其他类中的方法不会意外修改数据。
顾名思义,getter是帮助访问私有属性或获取私有属性值的方法,而setter是帮助改变或设置私有属性值的方法。
访问私有属性
下面,我们编写代码来创建一个类,对其进行初始化并访问其变量,而无需创建任何其他方法。
示例
class year_graduated:def __init__(self, year=0):
self._year = year
# Instantiating the class
grad_obj = year_graduated()
#Printing the object
print(grad_obj)
#Printing the object attribute
print(grad_obj.year)
输出结果
运行上面的代码将为我们提供以下结果-
<__main__.year_graduated object at 0x00F2DD50>0
第一个打印语句为我们提供了所创建对象的详细信息,而第二个打印对象为我们提供了private属性的默认值。
使用getter和setter
在下面的示例中,我们将创建一个类,初始化为is,然后向其中的每个添加一个getter和setter方法。然后,通过实例化类并使用这些getter和setter方法访问这些方法中的变量。因此,您可以将逻辑隐藏在setter方法内。
示例
class year_graduated:def __init__(self, year=0):
self._year = year
# getter method
def get_year(self):
return self._year
# setter method
def set_year(self, a):
self._year = a
grad_obj = year_graduated()
# Before using setter
print(grad_obj.get_year())
# After using setter
grad_obj.set_year(2019)
print(grad_obj._year)
输出结果
运行上面的代码将为我们提供以下结果:
02019
将属性设为私有
在下一个示例中,我们看到如何将方法设为私有,以使其中的变量无法由外部调用函数操纵。它们只能由类中的函数操纵。通过在其前面加上两个下划线来使它们变为私有。
示例
class year_graduated:def __init__(self, year=32):
self._year = year
# make the getter method
def get_year(self):
return self.__year
# make the setter method
def set_year(self, a):
self.__year = a
grad_obj = year_graduated()
print(grad_obj._year)
# Before using setter
print(grad_obj.get_year())
#
# # After using setter
grad_obj.set_year(2019)
print(grad_obj._year)
输出结果
运行上面的代码将为我们提供以下结果:
32AttributeError: 'year_graduated' object has no attribute '_year_graduated__year'
从私有方法中读取值
不,我们可以使用property方法而不使用getter方法来访问私有属性值。
示例
class year_graduated:def __init__(self, year=32):
self._year = year
@property
def Aboutyear(self):
return self.__year
@Aboutyear.setter
def Aboutyear(self, a):
self.__year = a
grad_obj = year_graduated()
print(grad_obj._year)
grad_obj.year = 2018
print(grad_obj.year)
输出结果
运行上面的代码将为我们提供以下结果:
322018
以上是 Python中的Getter和Setter 的全部内容, 来源链接: utcz.com/z/331336.html