1

如果这是一个类方法,这个任务很简单:

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_funclassmethod

4

0 回答 0