问题如下:classA:...o=A()o.a=0deff(o,a):print(eval(o+'.'+a))f('o','a')#AttributeError:'str'objecthasnoattribute'a'但是:classA:...o=A()o.a=0print(eval('o'+'.'+'a'))#0这是为什么呢?
1 回答
慕工程0101907
TA贡献1887条经验 获得超5个赞
跟名字空间有关,eval()官方文档是这样的:eval(expression,globals=None,locals=None)其中有:globals:全局名字空间locals:局部名字空间两个可选属性.如果这两个都不写,eval默认只能识别标准的builtins模块.你定义的f()函数的局部名字空间不包含实例o:classA:def__init__(self):self.a=10o=A()o.a#10deff(o,a):print(eval(o+'.'+a,globals())f('o','a')
添加回答
举报
0/150
提交
取消
