zoukankan      html  css  js  c++  java
  • 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')()
    星辰大海
  • 相关阅读:
    Spring MVC 学习笔记3
    Spring MVC 学习笔记2
    Spring MVC 学习笔记1
    jsp 传多个值给后端
    如何使32位Win7支持超过4GB的内存,而不装64位
    Java | 基础归纳 | Gson && Json
    快速矩阵 | 入门 | 矩阵乘法次数计算
    Jquery | 基础 | jQuery表单对象属性过滤选择器
    Jquery | 基础 | 属性过滤选择器
    JSP | 基础 | JSP行为 | incline && forward
  • 原文地址:https://www.cnblogs.com/qiuyubai/p/12877527.html
Copyright © 2011-2022 走看看