如何获取作为参数传递的方法的全名

时间:2017-08-24 19:15:43

标签: python object methods parameters

我不确定这是否是一个重复的问题。我正在网上阅读信息(包括这里,例如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'因为那是参数的全名。

2 个答案:

答案 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