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

  • 相关阅读:
    虚拟机中安装CentOS7
    tensorflowwindows安装
    CentOS7离线安装Ambari与HDP
    (二)apache atlas配置和运行
    kafka资料收集
    kafka源代码环境配置
    文件传输遇到的坑
    故障保护设置
    多轴APM调参
    程序员考试操作步骤
  • 原文地址:https://www.cnblogs.com/TF511/p/9844718.html
Copyright © 2011-2022 走看看