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