首页 > 其他 > 详细

eval函数让我忧伤

时间:2019-11-06 23:47:11      阅读:100      评论:0      收藏:0      [点我收藏+]

 今天首次接触这个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

 

 

 

 

 

 

eval函数让我忧伤

原文:https://www.cnblogs.com/z-qinfeng/p/11809297.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!