eval函数让我忧伤

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

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

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

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

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

 

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

 

1. 代码结构以下对象

 

 

 

2. ipvsadm.pyblog

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

 

3. 测试类 test.pyip

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
相关文章
相关标签/搜索