не много поправил ваш код
class Caller:
def __init__(self, *args, **kwargs):
self.list_func = []
self.args = args
self.kwargs = kwargs
def __iter__(self):
for func in self.list_func:
yield f'{func.__name__}: {func(*self.args, **self.kwargs)}'
def app_func(self, func):
self.list_func.append(func)
def register_function(caller0):
def my_decorator(func):
caller0.app_func(func)
return my_decorator
caller1 = Caller(1, 2, z=5) # создаем один объект Caller'а, который хранит в себе числовые аргументы
@register_function(caller1) # регистрируем функцию в обоих объектах
def summator(x, y, z): # сама функция просто возвращает сумму аргументов
return x + y + z
@register_function(caller1) # регистрируем функцию в обоих объектах
def func_2(x, y, z): # сама функция просто возвращает сумму аргументов
return x * y * z
for result in caller1: # теперь будем лениво вызывать функции, зарегистрированные
print(result)
summator: 8
func_2: 10