Я вызываю API, который возвращает AttributeDict с рядом атрибутов, таких как to и from.
Чтобы получить доступ к этим атрибутам, я использую запись через точку. Например, я использую object.to, и он отлично работает.
Когда я пытаюсь использовать object.from, я получаю сообщение об ошибке SyntaxError: invalid syntax. Я предполагаю, что это потому, что from — это ключевое слово в Python..
Если это так, можно ли получить доступ к from через точку? На данный момент я использую object["from"], который работает, но не соответствует остальной части моего кода.
Атрибуты экземпляра и класса подчиняются тем же соглашениям об именах, что и переменные. В некотором смысле переменные являются атрибутами модуля.






Хотя можно использовать getattr для доступа к таким атрибутам:
val = getattr(ad, 'from')
это более громоздко, чем синтаксис ad['from'], поддерживаемый вашим AttributeDict, и не удовлетворяет ваше стремление к точечной нотации.
В настоящее время нет возможности доступа к таким атрибутам с точечной нотацией. Просто придерживайтесь индексации. Он обрабатывает зарезервированные имена, имена с пробелами/дефисами/и т.д. в них и имена, конфликтующие с существующими методами (при разумной реализации AttributeDict). Даже если вы использовали getattr, getattr(ad, 'get') все равно, вероятно, вернет метод get AttributeDict вместо значения ключа 'get'.
Обычно рекомендуется использовать индексацию везде в программе?
@python_crypto_questions в первую очередь не рекомендуется давать атрибутам то же имя, что и ключевым словам. Рекомендуется просто использовать синтаксис obj.attribute.
И именно поэтому
AttributeDictобычно имеет значение плохая идея. Они стирают границы между «данными» и «кодом».