反射相关与模块导入

1通过反射导入模块:
#!/usr/bin/env python
# encoding: utf-8
def run():
    inp = input("请输入您想访问页面的url:  ").strip()
    modules, func = inp.split("=")#分割模块与方法
    print( modules, func)
    #当主调和被调文件不在同一个目录时,需要挎包调用
    obj = __import__('dalan_test.' + modules,fromlist=True)
    #判断对象中是否有func
    if hasattr(obj, func):
        func = getattr(obj, func)
        func()#调用函数
    else:
        print("404")

if __name__ == '__main__':
    run()
 
 

 

 

 2.在一个包中普通模块调用__init__.py下的类或者函数

 #在Python工程里,当python检测到一个目录下存在__init__.py文件时,python就会把它当成一个模块(module)

 #Python中的package定义很简单,其层次结构与.py所在目录的层次结构相同,比较关键的一点是package中必须包含一个__init__.py的文件(可以为空 也可以不为空)

备注:需要在__init__.py中加上:  __all__ = ["模块名"] ,否则引用不到

 

普通模块导入并应用__init__.py的内容

 

 

 

 

 

 

相关连接:

https://www.liujiangblog.com/course/python/48 .............................................反射机制

https://www.cnblogs.com/zhangtao-0001/p/14860579.html...........................python包中的 init.py 函数的含义和作用

posted on 2017-12-01 15:46  chen_2987  阅读(170)  评论(0编辑  收藏  举报

导航