• 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')()
    星辰大海
  • 相关阅读:
    hdu 1203 I NEED A OFFER! (01背包)
    链式前向星
    hdu 3790 最短路问题 (spfa练手)
    hdu 2859 Phalanx (最大对称子矩阵)
    hdu 1160 FatMouse's Speed (最长上升子序列+打印路径)
    hdu 5289 Assignment (ST+二分)
    vue环境配置 vue-cli脚手架
    1、初始Java应用程序
    HTML5之Canvas画正方形
    布尔表达式
  • 原文地址:https://www.cnblogs.com/qiuyubai/p/12877527.html
Copyright © 2020-2023  润新知