我正在使用 Python 2.5 在 Maya 中工作,编写动态热键管理器类并在尝试分配特定于实例的命令时遇到了麻烦,因为 nameCommands 在 mel 中表示为字符串。我最终得到如下命令:
<bla.Bla instance at 0x0000000028F04388>.thing = 'Dude'
我已经看到了很多关于 repr 和 eval 的主题,但是我下面的测试示例失败了。
class Foo:
pass
f = Foo()
f.thing = 'Jeff'
rep = repr(f)
y = eval(rep) # errors here
name = y.thing
# Error: invalid syntax
# Traceback (most recent call last):
# File "<maya console>", line 7, in <module>
# File "<string>", line 1
# <__main__.Foo instance at 0x00000000294D8188>
# ^
# SyntaxError: invalid syntax #
我假设我想要的是某种从字符串中获取该实例的正确对象的方法。如果我知道它的样子,我可以将字符串格式化为可评估的命令。 有关更多使用信息,请参阅我的 cgtalk 帖子
SO 相关主题:
这个说这是不可能的,但用户也想要一个用例,我希望我已经提供了。 如何从字符串中获取对象?
其他: repr的输出什么时候有用? 如何使用 print() 打印一个类或类的对象? 允许我的类实例的 repr() 由 eval() 解析 __repr__ 在 python 中的主要目的 如何在覆盖 python 中的 __str__ 方法后获取实例的地址 Python repr 类 如何使用'pickle'