zoukankan      html  css  js  c++  java
  • importlib-根据字符串导入模块和反射的应用

    实例一

     

     oo.py文件:

    NAME = "小黑"
    
    class Person(object):
        def __init__(self, name):
            self.name = name
    
        def dream(self):
            print("{}在做美梦!".format(self.name))

    importlib_demo.py文件:

    # from xx import oo
    # 
    # print(oo.NAME)        #小黑
    # p = oo.Person("赵导")
    # p.dream()             #赵导在做美梦!
    
    
    s = "xx.oo"
    import importlib
    
    # 根据字符串导入模块
    # 通常用来导入包下面的模块
    o = importlib.import_module("xx.oo")  #import_module不能导入类,只能导入模块,xx代表包,oo是模块
    # 此时o就代表oo模块,拿到模块之后就可以根据反射可以找到里面的类、变量、函数等等
    
    print(o.NAME)         #小黑
    p = o.Person("赵导")
    p.dream()             #赵导在做美梦!
    
    
    #反射的应用:由字符串找类、方法、属性
    #---------------------通过字符串找类--------------------------
    the_class = getattr(o, "Person") #从模块o中找Person类这个变量,赋值给the_class the_class ==o.Person p2 = the_class("小黑") p2.dream() #小黑在做美梦! #-------------------通过字符串找一个对象的属性------------------------ class Person(object): def __init__(self,name): self.name=name alex=Person("alex") x="name" # print(alex.name) ,但print(alex.x)是错误的 ret=getattr(alex,"name") # 等价于alex.name print(ret) #alex

     实例二:rest framework中

     

  • 相关阅读:
    JUnit4.13环境配置
    OO第5-7次作业总结
    电梯的一点浅优化
    C++变量作用域、生存期、存储类别
    最后一次OO博客
    OO第三次总结
    OO第二次总结
    OO第一次总结
    POJ3934
    POJ刷题计划
  • 原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/12818692.html
Copyright © 2011-2022 走看看