Учитывая метод, как получить класс, который определяет этот метод? - PullRequest
0 голосов
/ 14 февраля 2019

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

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...