如果这是一个类方法,这个任务很简单:
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