首页 > 技术文章 > python中的反射

wang-xing-hao 2019-07-11 20:59 原文

反射

hashttr :判断某个函数或者变量是否存在

getattr :如果instance对象中有属性name则打印self.name的值,否则打印'not find'

1.反射模块中的内容

import a
import sys
print(sys.modulse['a'].Alipay)
print(a.Alipay)
print(getattr(a,'Alipay'))
print(getattr(sys.modules['a'],'Alipay'))
  1. 反射本文件中的内容

    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')()
    
  2. 反射对象中的属性或者绑定方法

    class Person:
        def __init__(self,name,age):
            self.name = name
            self.age = age
        def qqxing(self):
            print('qqxing')
    alex = Person('alex',83)
    wusir = Person('wusir',74)
    ret = getattr(alex,'name')
    print(ret)
    ret = getattr(wusir,'name')
    print(set)
    ret = getattr(wusir,'qqxing')
    ret()
    
  3. 反射类的静态变量

    class A:
        Role = '治疗'
        def __init__(self):
            pass
    print(getattr(A,'Role'))#调用静态变量的时候需要用类名加上静态名
    
  4. callable #判断对象是否可以被调用,可以返回True,不可以返回False

推荐阅读