目录
1. getter、setter等访问器方法
1)为什么使用getter、setter访问器方法
在学习什么是setter、getter等访问器方法时,我们先来看一段代码:
# 定义一个矩形类
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
# 创建一个对象
my_rectangle = Rectangle(10, 5)
print(my_rectangle.width, my_rectangle.height) # 10 5
my_rectangle.width = 15
print(my_rectangle.width, my_rectangle.height) # 15 5
对于定义的Rectangle类,我们创建对象时都会调用__init__函数,此函数为对象定义了两个实例变量;
对象可以随意读出和修改这两个实例变量,这不符合面向对象编程的三大特征中的“封装”特征(将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法实现对内部信息的操作和访问)。
但是,由于Python没有提供类似于其他语言的private等修饰符,Python并不能将实例变量真正隐藏起来,所以尽管还是要通过定义方法去访问实例变量,但外部程序依然可以直接访问实例变量;
所以,这就是我们使用setter、getter访问方法的主要原因。除此之外,我们可以在这些方法中加入控制逻辑,限制对属性的不合理访问。