Если это метод класса, эта задача проста:
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
?