为了账号安全,请及时绑定邮箱和手机立即绑定

python函数中使用eval的疑惑?

python函数中使用eval的疑惑?

慕慕森 2019-05-23 16:51:59
问题如下: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=10
o=A()
o.a#10
deff(o,a):
print(eval(o+'.'+a,globals())
f('o','a')
                            
查看完整回答
反对 回复 2019-05-23
  • 1 回答
  • 0 关注
  • 760 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号