• python 反射


    1、getattr
    class F:
    def __init__(self, name):
    self.name = name

    def show(self):
    return self.name
    obj = F('tom')
    s = getattr(obj, 'name')
    r = getattr(obj, 'show')
    print(s) # tom
    print(r())# tom

    getattr反射类F中的属性,getattr(对象,类属性)

    2、hasattr
    class F:
    def __init__(self, name):
    self.name = name

    def show(self):
    return self.name
    obj = F('tom')
    s = hasattr(obj, 'name')
    h = hasattr(obj, 'age')
    print(s) # Ture
    print(h) # False

    hasattr判断类中存在的属性,如果存在返回Ture,如果不存在返回False

    3、setattr
    class F:
    def __init__(self, name):
    self.name = name

    obj = F('tom')
    print(obj.name) # tom
    # 对已存在的属性值赋值
    setattr(obj, 'name', 'jack')
    print(obj.name) # jack
    # 设置新的属性值
    setattr(obj, 'age', 12)
    print(obj.age) # 12
    setattr 用于设置属性值,该属性不一定是存在的

    4、delattr

    class F:
        def __init__(self, name):
    self.name = name

    obj = F('tom')
    print(obj.name) # tom
    delattr(obj, 'name')
    obj.name
    当执行delattr 后,在调用name属性,会提示“AttributeError: 'F' object has no attribute 'name'”

    delattr 用于删除属性值
  • 相关阅读:
    用脚本实现对pm2.5 数据的获取
    虚拟机下的快盘空间分配方案
    C++中new的用法
    只在堆或栈上生成对象
    Virtualbox识别USB设备
    最长公共字序列
    gdb 打印vector 等stl数据
    LC_CTYPE: cannot change locale
    字符串压缩
    对象的概念
  • 原文地址:https://www.cnblogs.com/jinbaobao/p/12058122.html
Copyright © 2020-2023  润新知