如果这是一个类方法,则此任务很简单:
class MyClass:
@classmethod
def some_fun(cls):
pass
fun = MyClass.some_fun
my_class = fun.__self__
print (my_class is MyClass) # True
但是,仅由于some_fun
是classmethod
才有效。让我们将其设为常规方法,上面的代码将停止工作:
class MyClass:
def some_fun(self):
pass
fun = MyClass.some_fun
my_class = fun.__self__ # AttributeError: 'function' object has no attribute '__self__'
print (my_class is MyClass)
上面的代码引发AttributeError
。
如果MyClass
是常规方法而不是MyClass.some_fun
,给定some_fun
,有没有办法检索classmethod
?