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')()
    星辰大海
  • 相关阅读:
    Chrome 扩展及应用开发
    nslinebreakbywordwrapping or nslinebreakcharwrapping
    动态计算uilabel的高度,
    长度还是靠谱,
    dictionary allkeys
    适配
    Linux 下phpstudy的安装使用补充说明
    mysql使用Navicat 导出和导入数据库
    Mysql命令mysql:连接Mysql数据库
    远程连接阿里云服务器ping不通ip解决方案
  • 原文地址:https://www.cnblogs.com/qiuyubai/p/12877527.html
Copyright © 2011-2022 走看看