Maya中的灯具有属性Use Color Temperature
,这是一个复选框,当我切换它时,在Maya内部调用一个函数来实际执行场景后面的工作。不幸的是,打印出函数地址<function callback at 0x0000000051CD7DD8>
而不是它的名字。单击复选框时,我不知道执行了哪个功能。有没有办法将这个地址转换为python函数对象,还是可以使用这个内存地址打印函数的实际名称?
答案 0 :(得分:2)
这意味着调用名为callback
的函数。
我在相应的代码文件中查找def callback(...):
,看看它的作用。
要重新生成您的输出,只需要一个名为callback
的函数:
>>> def callback():
... print "My name is Reut Sharabani"
...
>>> cb = callback
>>> cb
<function callback at 0x7f182f3ca6e0>
如果您想以编程方式获取函数的名称:
>>> cb.__name__
'callback'
如果您想了解更多信息,可以使用dis
及其code object对其进行反汇编:
>>> import dis
>>> dis.dis(cb.__code__)
2 0 LOAD_CONST 1 ('My name is Reut Sharabani')
3 PRINT_ITEM
4 PRINT_NEWLINE
5 LOAD_CONST 0 (None)
8 RETURN_VALUE
答案 1 :(得分:2)
这似乎是纯粹的邪恶,说实话,我认为你可以/应该使用callback
代替。但作为参考,显然您可以使用垃圾收集模块gc
从id
获取对象。
找到SO response(你真的可以在SO上找到任何东西......):
import gc
def objects_by_id(id_):
for obj in gc.get_objects():
if id(obj) == id_:
return obj
raise Exception("No found")
我认为您需要将该号码强制转换为int
,因为id(obj)
会返回int
而不是hex
。
注意这可能有一些奇怪的竞争条件,在删除对象后,对象ID可能会被回收。