本文主要内容:

  • 解释setter和getter的使用方法解释@property装饰器的妙用
  • 在python中,setter和getter方法并不像其它编程语言中的那样。基本上,在面向对象编程语言中,使用setter和getter方法的主要目的是为了确保数据的封装。不像其它面向对象编程语言,python中的私有变量并不是真正的隐藏字段。在python中,通常在以下情况会用到setter和getter方法:
  • 在获取或者设置属性值的时候使用setter和getter方法为其添加验证逻辑避免对类的某些字段直接访问,比如类的私有变量不应该被外部调用者直击访问或者修改

class Student(object): def __int(self, age=0): self._age = age # getter方法 def get(self): return self._age # setter方法 def set(self, value): self._age = value xiaoming = Student() # 使用setter方法设置age xiaoming.set(20) # 使用getter方法返回age print(xiaoming.get()) print(xiaoming._age)

输出:

在上面代码中,set_age()和get_age()方法与普通方法并没有什么两样,那么如何实现像getter和setter一样的功能呢?这就要用到python中的特殊方法property()。

class Adult(object): def __int(self): self.__age = 0 # 获取属性_age的值 def get_age(self): print('getter() method called') return self.__age # 设置属性_age的值 def set_age(self, value): print('setter() method called') self.__age = value # 删除属性_age def del_age(self): del self.__age age = property(get_age, set_age, del_age) laowang = Adult() laowang.age = 60 print(laowang.age)

输出:

setter() method called
getter() method called
60

在上面的代码中,age就是一个属性对象,它保证了对私有变量的安全访问。

class Adult(object): def __init__(self): self.__age = 0 @property def age(self): print('getter() method called') return self.__age @age.setter def age(self, value): if value < 18: raise ValueError('Sorry, you are a child, games not allowed') print('setter() method called') self.__age = value xiaoli = Adult() xiaoli.age = 19 print(xiaoli.age)

输出:

setter() method called
getter() method called
19

上面的代码清晰地展示了如何用pythonic的方式使用@property装饰器实现setter和getter属性。同时实现了对属性赋值时的有效性检查。

到此这篇关于Python的getter和setter的方法使用详解的文章就介绍到这了,更多相关Python的getter和setter的方法使用内容请搜索本网站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本网站!

您可能感兴趣的文章:

  • python中的getter与setter你了解吗
  • python中@property的作用和getter setter的解释
  • Python @property及getter setter原理详解
  • Python如何使用@property @x.setter及@x.deleter
  • Python中的getter与setter及deleter使用示例讲解