zoukankan      html  css  js  c++  java
  • Python 装饰器之 Property: Setter 和 Getter

    一、什么是setter,getter

    @property的实现比较复杂,我们先考察如何使用。

    把一个getter方法变成属性,只需要加上@property就可以了,此时,@property本身又创建了另一个装饰器@score.setter,负责把一个setter方法变成属性赋值,于是,我们就拥有一个可控的属性操作.

    refer to:https://www.geeksforgeeks.org/getter-and-setter-in-python/

    二、使用场景

    Case1:对属性的赋值做判断和异常检测

    class Geeks:
        def __init__(self):
            self._age = 0
    
        # using property decorator
        # a getter function
        @property
        def age(self):
            print("getter method called")
            return self._age
    
        # a setter function
        @age.setter
        def age(self, a):
            if a < 18:
                raise ValueError("Sorry you age is below eligibility criteria")
            print("setter method called")
            self._age = a # setting the age using setter
    
    
    if __name__ == '__main__':
        g = Geeks()
        age_before_set = g.age
        print(age_before_set)  # 0
        g.age = 19
        age_after_set = g.age
        print(age_after_set)  # 19

    Case2:将 setter 和 getter 作为私有方法隐藏起来

    class FinalClass:
    
        def __init__(self, var):
            ## calling the set_a() method to set the value 'a' by checking certain conditions
            self.__set_a(var)
    
        ## getter method to get the properties using an object
        def __get_a(self):
            return self.__a
    
        ## setter method to change the value 'a' using an object
        def __set_a(self, var):
    
            ## condition to check whether var is suitable or not
            if var > 0 and var % 2 == 0:
                self.__a = var
            else:
                self.__a = 2
    
        a = property(__get_a, __set_a)

    Case3:多种属性之间的动态依赖关系

    refer to:https://iphysresearch.github.io/blog/post/programing/python/property_setter/

  • 相关阅读:
    Mongodb-SpringData
    Node-Vue
    SpringBoot-SpringCloud
    WebSocket-WebService
    Scala_学习
    GO_学习
    页面分页
    页面分页
    如何将域名部署到Tomcat中,用域名访问服务器
    如何将域名部署到Tomcat中,用域名访问服务器
  • 原文地址:https://www.cnblogs.com/ananmy/p/15194901.html
Copyright © 2011-2022 走看看