• python-反射


    根据字符串类型
    1.反射对象的 实例变量
    2.反射类的 静态变量/绑定方法/其他方法
    3.模块中的所有变量
    被导入的所有模块


    # 1.反射对象的 实例变量/绑定方法
    # 2.反射类的 静态变量/其他方法
    # 3.模块中的 所有变量
    # 被导入的模块
    # 当前执行的py文件 - 脚本
    
    class A:
        Role = '治疗'
    
        def __init__(self):
            self.name = 'alex'
            self.age = 84
    
        def func(self):
            print('wahaha')
            return 666
    
    
    a = A()
    print(getattr(a, 'name'))  # 反射对象的实例变量
    print(getattr(a, 'func')())  # 反射对象的绑定方法
    print(getattr(A, 'Role'))
    import a  # 引用模块中的任意的变量
    
    print(getattr(a, 'sww'), a.sww)
    getattr(a, 'sww')()
    print(getattr(a, 'lst'), a.lst)
    print(getattr(a, 'dic'), a.dic)
    print(getattr(a, 'we'), a.we)
    import sys  # 反射本模块中的名字
    
    cat = '小a'
    dog = '小b'
    
    
    def pig():
        print('小p')
    
    
    print(getattr(sys.modules['__main__'], 'cat'))
    print(getattr(sys.modules['__main__'], 'dog'))
    getattr(sys.modules['__main__'], 'pig')()

    进阶: 

    hasattr(a, 'func'):  # 判断某个类/对象能不能反射.return True/False
    callable(obj) 判断对象是否可调用 return True.False
     
    class A:
        Role = '治疗'
    
        def __init__(self):
            self.name = 'alex'
            self.age = 84
    
        def func(self):
            print('wahaha')
            return 666
    
    
    a = A()
    print(hasattr(a, 'sex'))
    print(hasattr(a, 'age'))
    print(hasattr(a, 'func'))
    if hasattr(a, 'func'):  # 判断某个类/对象能不能反射.return True/False
        # callable(obj) 判断对象是否可调用 return True.False
        if callable(getattr(a, 'func')):
            getattr(a, 'func')()
    星辰大海
  • 相关阅读:
    Android Overlay学习
    为WinForm combox控件增加自动完成功能
    职业理想
    How to become a hacerk.黑客
    .net程序员常用网站
    面向对象设计原则
    net开源cms系统
    如何:禁用 Windows 窗体 DataGridView 控件的按钮列中的按钮(摘录)
    计算机编码(百度百科)
    .net winform 从资源文件中引用图片资源
  • 原文地址:https://www.cnblogs.com/qiuyubai/p/12877527.html
Copyright © 2020-2023  润新知