Объяснение: То, что вы ставите после E.
, должно быть действительным идентификатором Python .Это включает в себя подчеркивание, но не дефисы.E.date-added
компилируется «успешно», как если бы это было (E.date) - added
, но затем завершается с ошибкой во время выполнения, поскольку (в вашем случае) added
не было определено.
Альтернативы:
(1* E.tag
- это просто косметический прием, который не работает со всеми допустимыми тегами XML.В действительности атрибуты объекта Python могут быть почти любым старым мусором, вы просто не можете сделать obj.really+funky%attribute*name,dude
в исходном коде.Один хитрый трюк заслуживает лучшего трюка: вы можете сохранить тот же шаблон создания элемента, т.е. не нужно указывать тег каждый раз, когда вы создаете элемент, выполнив:
DATE_ADDED = getattr(E, 'date-added')
, а затем с помощью DATE_ADDED
как вы делаете сейчас.
(2) Если схема находится под вашим контролем, используйте подчеркивание (date_added) вместо дефиса (дата добавлена).