python> = 3.6 - набор текста. Может вызываться различными возможными сигнатурами: что-то лучше, чем многоточие? - PullRequest
0 голосов
/ 04 мая 2020

У меня есть последовательность последовательных шагов. Первый читает данные, а следующие постепенно преобразуют эти данные.

В конце каждого шага у меня есть общий код, так что я вызываю функцию _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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...