Я начал изучать систему ввода в Python и столкнулся с проблемой определения аргументов функций, которые можно выбирать. Не все в python может быть засечено, могу ли я определить аннотацию типа, которая говорит: «принимать только те объекты, которые могут быть разборными»?
Сначала это звучит как нечто, что должно быть возможно, похоже на Serializable
в Java, но затем в python нет интерфейса Picklable
, и немного больше размышляя над проблемой, мне приходит в голову, что засолка является неотъемлемой задачей времени выполнения , То, что можно мариновать перечисляет ряд вещей, которые можно мариновать, и нетрудно представить контейнер лямбда-функций, которые нельзя было бы мариновать, но я не могу придумать способ определить это раньше рука (не касаясь определения контейнера).
Единственный способ, которым я придумал, - это определить что-то вроде typing.Union[Callable, Iterable, ...]
из всех вещей, перечисленных в Что можно мариновать , но это не похоже на хорошее решение.