Учитывая метод, как получить класс, который определяет этот метод?
Если это метод класса, эта задача проста:
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
?