Не очень понятно, а что не понятно. Передается объект класса в функцию, ты зачем назвал параметр функции func а передаешь туда объект класса. Вот здесь
result = func(*args, **kwargs)
ты инициализируешь экземпляр класса, затем возвращаешь его да и все, MyClass у тебя стала функцией которая возвращает экземпляр класса. Ну добавь там чего нибудь например.
def f():
return 100
def decor(func):
def _wrapper(*args, **kwargs):
result = func(*args, **kwargs)
result.complex_calculation = f
return result
return _wrapper
class MyClass:
def complex_calculation(self):
return 42
MyClass = decor(MyClass)
my_obj = MyClass()
print(my_obj.complex_calculation())
Твой метод вернет, не 42, а 100. Или объяви метод какой-нибудь которого нет.