У меня есть последовательность последовательных шагов. Первый читает данные, а следующие постепенно преобразуют эти данные.
В конце каждого шага у меня есть общий код, так что я вызываю функцию _runStep
, которая принимает шаг как вызываемый аргумент и, начиная со второго шага, данные.
С точки зрения набора текста я не могу найти лучший способ, чем многоточие (...
). Действительно, typing.Optional[myDataType]
не работает.
У вас есть лучшее решение вместо того многоточия, которое ничего не говорит?
Спасибо
def _runStep(
step: typing.Callable[
..., # how to specify either nothing (e.g. no argument at all) or MyDataType?
MyDataType
],
data: typing.Optional[MyDataType] = None
) -> MyDataType:
if data is None:
ret = step()
else:
ret = step(data)
# Here, we perform some common things at every step
return ret
ret = _runStep(self.read0) # reads the data
ret = _runStep(self.step1, ret) # transformation
ret = _runStep(self.step2, ret) # another transformation
# and many other steps
return ret