Начал использовать Slack API для Python, освоился с ним из их документации. Я не мог понять, как это работает под капотом
Slack API возвращает объект SlackResponse
в случае сбоя (или успеха), и он будет выглядеть примерно так
Теперь, если я побегу
e.response["error"]
он печатает 'channel_not_found'
сообщение - как str
объект
Подумал "error"
как key
(как в e.response
как dict
), и попытался напечатать все доступные key
s, но это не dict
/hash
кажется
e.response.keys()
# AttributeError: 'SlackResponse' object has no attribute 'keys'
Может кто-нибудь объяснить, как это возможно, пожалуйста. Хотелось бы понять, как они сделали это возможным. ТИА
Пожалуйста, дайте вашему вопросу правильное название
По иронии судьбы, эти __
-методы обычно называют «магическими методами».
(Всегда стоит взглянуть на исходный код, особенно с python.
Здесь вы можете видеть, что он возвращает строку, потому что методы геттера переопределены (__getitem__
здесь), если я правильно понимаю ваш вопрос:
https://github.com/slackapi/python-slack-sdk/blob/main/slack_sdk/web/slack_response.py
В этом есть смысл. Спасибо, что нашли время посмотреть их API и ответить на мой вопрос.
Абсолютно никаких проблем. Пожалуйста, просто попробуйте дать своему вопросу более осмысленное название, потому что иначе люди не нажимают на него.
Класс
SlackResponse
(или один из его родителей) должен реализовать свой собственный__getitem__
. См.: stackoverflow.com/questions/43627405/…