我不确定这是否是一个重复的问题。我正在网上阅读信息(包括这里,例如How to get a function name as a string in Python?)并搞乱各种建议,但各种信息要么过时/不适合我的特定用例/我只是错误地实现它。
问题:
我将对象的方法作为参数传递。我想知道这个对象和方法的全名是什么。
示例代码(我到目前为止):
class test():
def asdf():
print('asdf')
def magic(command):
print('command is:', command.__name__)
magic(test.asdf)
目标是让magic()输出'命令是:asdf' to'命令是:test.asdf'因为那是参数的全名。
答案 0 :(得分:2)
使用__qualname__
。
>>> print(test.asdf.__qualname__)
test.asdf
答案 1 :(得分:1)
为了清楚起见,您没有将对象的"方法作为参数"但只是一个类定义中的函数名。
传递对象的"方法"你必须实际创建一个对象,代码看起来像这样:
class test():
def asdf():
print('asdf')
def magic(command):
print('command is:', command.__func__.__qualname__)
# Returning the object to which this method is bound just to ilustrate
return command.__self__
magic(test().asdf)
"对象的方法" = Instance methods