phinnik
@phinnik
В фамилии ударение на первую о.

Как лучше организовать вызов функции на python с типизацией типов?

Здравствуйте, пишу обертку над vk api для python. Хочу сделать полную типизацию типов для всех функций и объектов вк, а также для методов вк апи и их респонзов.
встал вопрос об удобстве такого формата. Типизация данных конечно же хороша, но она делает код слишком громоздким. Например функцию для вызова групп с параметром "filter" придется делать так:
vk.groups.get(filter=GroupsFilter.ADMIN)
>>> {'response': {'count': 0, 'items': []}}

ведь есть тип данный GroupsFilter, который имеет следующую структуру:
class GroupsFilter(Enum):
	ADMIN = 'admin'
	EDITOR = 'editor'
	MODER = 'moder'
	GROUPS = 'groups'
	PUBLICS = 'publics'
	EVENTS = 'events'
	HAS_ADDRESSES = 'has_addresses'


Хотя можно было бы просто вызвать:
vk.groups.get(filter='admin')
>>> {'response': {'count': 0, 'items': []}}


плюс первого варианта в том, что при программировании в IDE, например в pycharm, будут возникать подсказки как на фото ниже, и сразу будет понятно, какие значения может принимать параметр и не лезть в документацию: 5ef21c0ea279d998211844.png
С другой стороны, это делает код громоздким и для появления подсказки нужно знать, что параметр "filter" принимает в себя тип GroupsFilter.

Есть ли у вас какие-нибудь советы о том, как лучше сделать?

p.s. Все типы данных взяты из официальной Json-Schema(Github)
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
Можно использовать еще typing.Literal, но на поддержку PyCharm рассчитывать не приходится.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы