• python之反射


    • getattr 获取指定字符串名称的对象属性
    • setattr 为对象设置一个对象
    • hasattr 判断对象是否有对应的对象(字符串)
    • delattr 删除指定属性

    1、getattr

    def getattr(object, name, default=None)
    
    • object:对象
    • name:字符串类型,表示对象的属性
    • default:如果name表示的属性在对象中不存在,默认会报错。如果设置了default,则不会报错而是返回default值
    class stu():
        name = 'abc'
        def set_name(n):
            self.name = n
    s = stu()
    print(getattr(s, 'name'))
    print(getattr(s, 'age', 20))
    set_name = getattr(s, 'set_name')
    set_name('ccc')	# 相当于调用方法
    

    2、setattr

    def setattr(x, y, v)
    
    • x表示对象,y表示属性名,v表示属性值
    • 并不会返回有返回值
    • 如果对象已经存在属性y,则相当于覆盖,如果不存在,则表示新增属性
    class stu():
        name = 'abc'
    s = stu()
    setattr(s, 'name', 22)
    setattr(s, 'age', 123)
    

    3、hasattr

    def hasattr(*args, **kwargs)
    
    • 判断是否具有属性或者方法,如果有则返回True,否则返回False
    class stu():
        name = 'abc'
        def set_name():
            pass
    s = stu()
    print(hasattr(s, 'name'))
    print(hasattr(s, 'age'))
    print(hasattr(s, 'set_name'))
    

    4、delattr

    def delattr(x, y)
    
    • x表示对象,y表示属性名
    • y不能为方法名或者不存在的属性名,或者会报错
    class stu():
        name = 'abc'
        def __init__(self, age):
            self.age = age
    s = stu(18)
    delattr(s,'age')
    print(hasattr(s, 'age'))
    
    • 注意,delattr只能删除对象的经过self调用的属性,否则会报错。
    • 即这里只能删除age而不能删除name

    5、动态导入模块

    import() 函数用于动态加载类和函数 。

    如果一个模块经常变化就可以使用 import() 来动态载入。

    import sys  
    __import__('a')        # 导入 a.py 模块
    
  • 相关阅读:
    loadrunne-- Analysis 分析器
    Fiddler抓包工具详细介绍
    在 Windows 10 x64 上安装及使用 ab 工具的流程
    Ab工具基本使用
    ab压测返回结果解析
    VMware Workstation 14 Pro永久激活密钥
    通用接口测试用例设计
    线段树の二 区间乘+区间加
    线段树の一 区间和
    C++位运算
  • 原文地址:https://www.cnblogs.com/heibaimao123/p/16282799.html
Copyright © 2020-2023  润新知