zoukankan      html  css  js  c++  java
  • property装饰器

    # 需要了解的property的用法
    class People:
        def __init__(self,name):
            self.__name=name
    
        @property
        def name(self):
            return '<name:%s>' %self.__name
    
        @name.setter
        def name(self,new_name):
            if type(new_name) is not str:
                print('名字必须是str类型')
                return
            self.__name=new_name
    
        @name.deleter
        def name(self):
            del self.__name
    
    obj=People('egon')  #查看 name 
    print(obj.name)
    
    obj.name='ok' #修改 name 属性
    print(obj.name)
    
    del obj.name    #删除 name 属性
    print(obj.__dict__)

    结果:

    <name:egon>
    <name:ok>
    {}

    关于property装饰器的使用顺序:

    class People:
        def __init__(self,name):
            self.__name=name
    
        def xxx_name(self):        #查看
            return '<name:%s>' %self.__name
    
        def yyy_name(self,new_name):    #修改
            if type(new_name) is not str:
                print('名字必须是str类型')
                return
            self.__name=new_name
    
        def zzz_name(self):        #删除
            del self.__name
    
        name=property(xxx_name,yyy_name,zzz_name)  #格式命名,固定的顺序(查->改->删)
    
    obj=People('egon')
    print(obj.name)
    
    # obj.name=123
    # print(obj.name)
    
    del obj.name
    print(obj.__dict__)

    如果要在类外面调用类中的隐藏属性就可以使用property

  • 相关阅读:
    构建自己的yara数据库
    Java反序列化漏洞研究
    我喜欢的资源
    jvm-垃圾收集
    jvm-内存
    java设计模式--行为模式
    java设计模式--结构型模式
    java设计模式--简介
    netty之 -- 手写rpc框架
    netty之---核心源码剖析
  • 原文地址:https://www.cnblogs.com/TF511/p/9844718.html
Copyright © 2011-2022 走看看