zoukankan      html  css  js  c++  java
  • @property装饰器将getter方法变成了属性

    廖雪峰教程

    总结:
    property() 函数的作用是在新式类中返回属性值。

    1.使用了@property装饰器将getter方法变成了属性,而此时@property又创建了另一个装饰器@func.setter,负责把setter方法变成。这样,就把getter和setter方法装饰成了属性,在调用getter和setter方法的时候就像是在调用该类的属性那样,更直接。但是需要注意的是,此处仍然是方法,只是看起来像属性而已。

    还记得装饰器(decorator)可以给函数动态加上功能吗?对于类的方法,装饰器一样起作用。Python内置的@property装饰器就是负责把一个方法变成属性调用的:

    我们在对实例属性操作的时候,就知道该属性很可能不是直接暴露的,而是通过getter和setter方法来实现的

    @property广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性

    class Sombody(object):
        def __init__(self, name=None, rank=None):
            self.name = name
            self.__rank = rank
    
        # 访问器 - getter方法
        @property
        def rank(self):
            return self.__rank
    
        # 修改检查器 - setter方法
        @rank.setter
        def rank(self, val):
            if not isinstance(val, int):
                raise TypeError("val must be a Integer")
            if val > 100:
                raise ValueError("val must between 1 and 100")
            self.__rank = val
    
    
    if __name__ == "__main__":
        s = Sombody('Michael Jackson', 1)
        print(s.rank)
        s.rank = 500
        print(s.rank)
  • 相关阅读:
    HDU 5273 Dylans loves sequence 暴力递推
    HDU 5285 wyh2000 and pupil 判二分图+贪心
    HDU 5281 Senior's Gun 贪心
    HDU 5651 xiaoxin juju needs help 逆元
    HDU 5646 DZY Loves Partition
    HDU 5366 The mook jong
    HDU 5391Z ball in Tina Town 数论
    HDU 5418 Victor and World 允许多次经过的TSP
    HDU 5642 King's Order dp
    抽屉原理
  • 原文地址:https://www.cnblogs.com/justblue/p/13285983.html
Copyright © 2011-2022 走看看