zoukankan      html  css  js  c++  java
  • eval函数让我忧伤

     今天首次接触这个eval函数,让我忧伤了一把。我把当成字符串拼接,结果错得天远地远。大体情况是下面这句代码,一个劲的给我报NameError: name 'qinfeng' is not defined.

      class_obj = eval('qinfeng.zheng.ipvsadm.%s()' % class_name)

    当时,我就想,这尼玛一个字符串拼接,还需要定义的啥鬼。

    后面百度了一把,发现自个有点瓜。

    原来eval这一骚操作之后,class_obj就是一个对象实例,而当时就是没有引包。

    下面模拟一下,便于以后复习,记心真是很给狗了。

    1. 代码结构如下

    2. ipvsadm.py

    class Ipvs():
        def say(self):
            print("我很蛋疼。。。")

    3. 测试类 test.py

    import qinfeng.zheng.ipvsadm
    
    if __name__ == '__main__':
        class_name = 'Ipvs'
        class_obj = eval('qinfeng.zheng.ipvsadm.%s()' % class_name)
        print(type(class_obj))
        class_obj.say()

    当把import qinfeng.zheng.ipvsadm注释掉,运行test.py就会报以下错误

    Traceback (most recent call last):
      File "E:/ws/python/20191106/qinfeng/zheng/test.py", line 5, in <module>
        class_obj = eval('qinfeng.zheng.ipvsadm.%s()' % class_name)
      File "<string>", line 1, in <module>
    NameError: name 'qinfeng' is not defined
  • 相关阅读:
    vue打包不显示或图片不显示配置
    Vue::is特性用法
    毕业实习报告
    前端vscode常用快捷键总结
    1. 变量常量
    信息收集之CMS指纹识别
    4. EIGRP的复合度量值
    3. EIGRP报文,三张表,邻居建立
    信息收集之目录扫描
    2. EIGRP路由单播邻居和被动接口
  • 原文地址:https://www.cnblogs.com/z-qinfeng/p/11809297.html
Copyright © 2011-2022 走看看