Держать в классе словарь, где значением будут не обработанные данные, а кортеж/список с входными данными и {None или обработанными данными}. Потом написать простенький метод, который будет проверять что на втором месте: если None, делать обчисления и засунуть их вместо него. Потом просто вернуть результат