Является ли объект SlackResponse словарем или строкой?

Начал использовать Slack API для Python, освоился с ним из их документации. Я не мог понять, как это работает под капотом

Slack API возвращает объект SlackResponse в случае сбоя (или успеха), и он будет выглядеть примерно так

Теперь, если я побегу

e.response["error"]

он печатает 'channel_not_found' сообщение - как str объект

Подумал "error" как key (как в e.response как dict), и попытался напечатать все доступные keys, но это не dict/hash кажется

e.response.keys()
# AttributeError: 'SlackResponse' object has no attribute 'keys'

Может кто-нибудь объяснить, как это возможно, пожалуйста. Хотелось бы понять, как они сделали это возможным. ТИА

Класс SlackResponse (или один из его родителей) должен реализовать свой собственный __getitem__. См.: stackoverflow.com/questions/43627405/…

slothrop 07.06.2023 13:48

Пожалуйста, дайте вашему вопросу правильное название

NoBlockhit 07.06.2023 13:48

По иронии судьбы, эти __-методы обычно называют «магическими методами».

bereal 07.06.2023 13:50
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

(Всегда стоит взглянуть на исходный код, особенно с python.

Здесь вы можете видеть, что он возвращает строку, потому что методы геттера переопределены (__getitem__здесь), если я правильно понимаю ваш вопрос: https://github.com/slackapi/python-slack-sdk/blob/main/slack_sdk/web/slack_response.py

В этом есть смысл. Спасибо, что нашли время посмотреть их API и ответить на мой вопрос.

scorpion35 07.06.2023 14:06

Абсолютно никаких проблем. Пожалуйста, просто попробуйте дать своему вопросу более осмысленное название, потому что иначе люди не нажимают на него.

NoBlockhit 07.06.2023 14:19

Другие вопросы по теме