首页 新闻 会员 周边 捐助

eval用法

0
[已解决问题] 解决于 2025-08-06 10:52

self="animal"
print(eval(self).sound())可以
但是print(eval(self.sound()))不可以
print(eval(self + ".sound()"))可以
这是什么原因,eval用法

_java_python的主页 _java_python | 小虾三级 | 园豆:738
提问于:2025-08-06 10:50
< >
分享
最佳答案
0
  1. print(eval(self).sound()) 成功
    python
    self = "animal"
    print(eval(self).sound()) # 假设 animal 是已定义的类实例
    执行流程:

eval(self) → eval("animal") → 解析为变量 animal

获取 animal 对象

调用 .sound() 方法

关键点:eval() 返回的是 对象引用,然后在该对象上调用方法

  1. print(eval(self.sound())) 失败
    python
    self = "animal"
    print(eval(self.sound())) # 错误!
    执行流程:

self.sound() → 尝试在字符串 "animal" 上调用 .sound() 方法

字符串没有 .sound() 方法 → AttributeError

根本原因:在 eval() 执行前就发生了方法调用错误

  1. print(eval(self + ".sound()")) 成功
    python
    self = "animal"
    print(eval(self + ".sound()")) # 假设 animal 是已定义的类实例
    执行流程:

self + ".sound()" → "animal.sound()"

eval("animal.sound()") → 解析并执行完整表达式

关键点:eval() 直接执行 完整的调用表达式

_java_python | 小虾三级 |园豆:738 | 2025-08-06 10:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册