Учитывая метод, как получить класс, который определяет этот метод?

Если это метод класса, эта задача проста:

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?

0 ответов

Другие вопросы по тегам