其他分享
首页 > 其他分享> > eval函数让我忧伤

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

 

 

 

 

 

 

标签:qinfeng,zheng,name,ipvsadm,忧伤,eval,class,函数
来源: https://www.cnblogs.com/z-qinfeng/p/11809297.html