从Python访问Objective-C hidden _cmd参数

从Python访问Objective-C hidden _cmd参数,objective-c,nslog,pyobjc,Objective C,Nslog,Pyobjc,我在PyObjC的内脏里摸索了很久,想弄明白这一点。在编写Python方法时,是否可以访问Objective-C的隐藏SEL_cmd方法参数?它必须在某个时刻生成,但我不确定我的Python代码是否能够在该时刻生成它 为了能够制作一个简单的PyObjC NSLog文本宏,我对此非常感兴趣: def meth_(self, arg): NSLog(u"%s called" % _cmd) 虽然我已经找到了在Python中进行此类日志记录的其他方法,但请参见Jeremy的答案,因此,在这一

我在PyObjC的内脏里摸索了很久,想弄明白这一点。在编写Python方法时,是否可以访问Objective-C的隐藏SEL_cmd方法参数?它必须在某个时刻生成,但我不确定我的Python代码是否能够在该时刻生成它

为了能够制作一个简单的PyObjC NSLog文本宏,我对此非常感兴趣:

def meth_(self, arg):
    NSLog(u"%s called" % _cmd)

虽然我已经找到了在Python中进行此类日志记录的其他方法,但请参见Jeremy的答案,因此,在这一点上,人们对PyObjC桥感到好奇。

为什么不记录Python函数的名称呢?然后可以应用Python方法来获取函数名,比如抛出异常并在堆栈跟踪中四处搜索,如中所示


ETA:演示前面代码段中提到的更好的方法,如Python 2.1中介绍的:使用sys.\u getframe。它要简单得多。

我不熟悉Python。但在objective-C中,您可以通过以下方式找到方法选择器:

const id* selfPtr = &self;
SEL sel = *(SEL*)(void*)(--selfPtr);

也许您可以在Python中使用相同的方法。

的确如此。我看过这些,必要时可以使用第二个。不是我想要的,但我很感激你的回答。