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)
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 1
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
Можно использовать еще typing.Literal, но на поддержку PyCharm рассчитывать не приходится.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект