• python反射


    什么是反射

    发射主要指程序可以访问、检测和修改它本身状态或者行为的一种能力(自省),就是通过字符串的形式导入模块,通过字符串的形式去模块中寻找指定的函数并执行

    4个内置函数

    getattr(strObject, attr [,default])

    返回指定字符串strObject的属性或方法'attr',如果有属性则返回该属性的值,
    如果有方法则返回该方法的内存地址,如果都没有报错。
    如果指定了默认值且都没有,则返回该默认值。

    hasattr(strObject, attr)

    判断指定字符串strObject对象是否有该属性或方法'attr',返回True/False

    setattr(strObject, attr, value)

    为指定字符串strObject对象设置属性attr的值,如果对象已有尬属性的值则修改原值,
    如果没有该属性则新增属性并赋值

    delattr(strObject, attr)

    删除指定字符串strObject对象的属性attr,如果没有该属性则报错。

    class People:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    
    p = People("尘世风", 18)
    print(hasattr(p, "name"))  # True
    print(getattr(p, "age"))  # 18
    print(getattr(p, "hobby", None))  # 获取不到属性,返回设定值
    setattr(p, "hobby", "Python")  # 无则增,有则改
    print(getattr(p, "hobby", None))  # Python
    delattr(p, "hobby")
    print(getattr(p, "hobby", None))  # None
    
    # 类也可以说是对象
    # print(hasattr(类,'类的属性/方法'))
    print(hasattr(list,'append'))   # True
    
  • 相关阅读:
    腾讯分析系统架构解析
    GreenPlum简单性能测试与分析--续
    我的一些提高效率的设置
    Windows 上借助注册表来修改键盘按键的映射
    WPF入门——Converter、XAML和Style
    30个极大提高开发效率的Visual Studio Code插件(转)
    USB PD充电
    macOS Mojave 美化一下终端
    WPF入门(4)——资源
    使用Duilib开发Windows软件(5)——使用VLC做视频播放
  • 原文地址:https://www.cnblogs.com/feng0815/p/16455873.html
Copyright © 2020-2023  润新知