Мне нужно добавить атрибут для каждого атрибута в интерфейсе. Поэтому я пытаюсь динамически модифицировать его, чтобы добавить их, но пока не с большим успехом.Как динамически добавлять атрибуты к интерфейсу
Скажем, у меня есть следующий интерфейс:
class IMember(Interface):
first_name = schema.TextLine(title=u'first name')
last_name = schema.TextLine(title=u'last name')
И я хотел бы изменить его так:
class IMember(Interface):
first_name = schema.TextLine(title=u'first name')
last_name = schema.TextLine(title=u'last name')
visbility_first_name = schema.Bool(title=u'Display: first name')
visbility_last_name = schema.Bool(title=u'Display: last name')
Я попытался модифицировать класс после этого, но, как он уже был инициализирован, была установлена схема, и я не знал, как ее изменить. Я также думал о написании директивы (например: interface.Implements()), но представляется довольно сложным сделать только для добавления атрибутов.
Моя конечная цель - добавить набор полей z3c.form с набором виджетов Bool.
Итак, есть ли способ сделать это на Python, или мне нужно изменить интерфейс и добавить все атрибуты вручную?
Спасибо!
Вы уверены, что ваши дополнительные атрибуты должны быть первые поля класса на схеме? Возможно, [Tagged Values] (https://developer.plone.org/components/interfaces.html#tagged-values) на интерфейсе может работать для вас. –
Извините, на мобильных устройствах возникли проблемы с отправкой правильных ссылок: http://docs.zope.org/zope.interface/README.html # tagged-values –
Моя конечная цель - иметь набор полей в z3c.form с набором виджетов Bool. Я не думаю, что отмеченные значения будут полезны в этом случае. – Gagaro