zoukankan      html  css  js  c++  java
  • 反射

    反射

    1通过字符串的形式,导入模块

    2通过字符串的形式,去模块中寻找指定函数,并执行

    先看下这个例子

    1 #这样导入模块没有问题
    2 import comm as cc
    3 
    4 #也可以这样导入,根据字符串导入模块。dd实际等于上面的as
    5 dd= __import__("comm")
    6 
    7 dd.f1()
    字符串导入模块
     1 mod=input("请输入模块:")
     2 mod_func=input("请输入函数:")
     3 
     4 #__import__用于字符串形式的导入模块
     5 aa=__import__(mod)
     6 
     7 #getattr根据字符串查找模块中的函数
     8 func=getattr(aa,mod_func)
     9 
    10 result=func()
    11 print(result)
    验证上面2个定义

     补充:

    字符串多层导入

    r=__import__('xxx.xxx.xx.abc',fromlist=True)

    反射方法:

    getattr  根据字符串的形式去某个模块中寻找东西

    hasattr  根据字符串的形式去某个模块中判断东西是否存在

    setattr  根据字符串的形式去某个模块中设置东西

    delattr  根据字符串的形式去某个模块中删除东西

    基于反射模拟web框架路由访问

     1 #-*- coding:utf-8 -*-
     2 from conf import account
     3 url=input("输入url:")
     4 des_url=url.split("/")[-1]
     5 
     6 #先用 hasattr看方法是否存在
     7 if hasattr(account,des_url):
     8     #方法存在就直接获取方法
     9     result=getattr(account,des_url)
    10     print(result())
    11 else:print(404)
    web框架路由
  • 相关阅读:
    Spider 爬虫
    python 数据分析几个重要点!!!
    python 接口开发<小demo>
    python 运维那些事儿~ <转>
    centos7 Docker 安装 (转)
    centos7+nginx+uwsgi+python3+django
    linux 用户组 文件权限
    Linux 进阶命令(二)转
    centos7 vi命令
    基于UDP协议的socket套接字编程
  • 原文地址:https://www.cnblogs.com/menkeyi/p/6758985.html
Copyright © 2011-2022 走看看