• hasattr getattr setattr delattr --> (反射)


    class Room:
        def __init__(self,name):
            self.name = name
    
        def big_room(self):
            print('bigroot')
    
    R = Room('回电话')
    
    #hasattr 有没某个属性,存在返回True 不存在返回Fales
    print(hasattr(R,'name'))      #R实例里面 有没有name属性  结果是:True
    print(hasattr(R,'big_room'))  #R实例里面 有没有big_room属性  结果是:True
    
    
    #getattr 获取某个实例里面属性的值,获取不到默认参数会给出报错
    '''getattr(object, name[, default]) -> value'''
    print(getattr(R,'name'))    #R实例里面 获取name属性值  结果是:回电话
    print(getattr(R,'big_room')) #R实例里面 big_room  结果是:函数属性的内存地址
    print(getattr(R,'big_room111','不存在')) #R实例里面 big_room  结果是:获取不到,返回不存在
    
    #setattr 设置某个实例的属性值
    setattr(R,'test','123')   #R实例里面,设置test=123的值 与R.test=123 是一回事
    print(R.__dict__)   #{'name': '回电话', 'test': '123'}
    setattr(R,'name','123')   #修改R实例里面name值
    print(R.__dict__)   #{'name': '123', 'test': '123'}
    setattr(R,'func',lambda x:x+1)  #增加一个函数属性
    
    #delattr删除某个实例的属性
    delattr(R,'name')   #删除R实例里面 name 属性   与del R.name  是一回事
    print(R.__dict__)   #{'test': '123'}

     

  • 相关阅读:
    Navicat工具链接 mysql"Access denied for user'root'@'IP'" 用户远程赋值
    centos 安装 swoole_framework 框架
    安装Ubuntu时出现Intel VT-X没有开启
    qt中控件的使用函数
    位操作
    快速排序
    二分查找法
    面试题第二弹
    串口助手输出乱码或无输出问题
    stm32串口烧写程序到开发板
  • 原文地址:https://www.cnblogs.com/ajaxa/p/9051607.html
Copyright © 2020-2023  润新知