zoukankan      html  css  js  c++  java
  • 静态属性property的本质和应用

    一、本质

    静态属性property本质就是实现了get,set,delete三种方法

    class Foo:
        @property
        def AAA(self):
            print('get的时候运行我啊')
    
        @AAA.setter
        def AAA(self, value):
            print('set的时候运行我啊')
    
        @AAA.deleter
        def AAA(self):
            print('delete的时候运行我啊')
    
        # 或者不加描述符直接这样写 ---> AAA=property(get_AAA,set_AAA,delete_AAA) #内置property三个参数与get,set,delete一一对应 
    
    
    # 只有在属性AAA定义property后才能定义AAA.setter,AAA.deleter
    f1 = Foo()
    f1.AAA  # get
    f1.AAA = 'aaa'  # setter
    del f1.AAA  # deleter

    二、应用(类型检测)

    class People:
        def __init__(self, name):
            self.name = name  # 实例化就触发property
    
        @property
        def name(self):
            # return self.name #无限递归
            return self.new_name
    
        @name.setter
        def name(self, value):
            if not isinstance(value, str):
                raise TypeError('必须是字符串类型')
            self.new_name = value
    
        @name.deleter
        def name(self):
            del self.new_name
    
    
    p1 = People('alex')  # self.name实际是存放到self.DouNiWan里
    # p1.name = 1  # 报错,必须是字符串类型

  • 相关阅读:
    2019 Java 第四周总结
    2019第三周总结
    Java 第二周总结
    2019春第十二周作业
    Day3
    Day3
    Day3
    Day3
    Day2
    Day2
  • 原文地址:https://www.cnblogs.com/lshedward/p/10433148.html
Copyright © 2011-2022 走看看