Как сказал micheal, он может не поддерживаться.Если тебе это действительно нужно.Вот несколько указателей.
Сохраните вашу схему в базе данных по имени, например: «PageSchema».Сохраните все свои записи в базе данных со всеми необходимыми параметрами.
Вы должны сделать что-то вроде этого:
for row in rows:
attrinbutes[row['name']] = build_attribute(row)
schemas[schema_name] = type(schema_name, (colander.MappingSchema,), attributes)
exec('%s = schemas[schema_name]' % schema_name)
Другими словами, он загружает все атрибуты и создает класс, используя оператор типа.Задача такого рода довольно проста и должна работать так же хорошо, как привычный синтаксис class
.Вызов exec
- это просто название для местных жителей.Возможно, вы могли бы использовать locals()[schema_name] = schmea
или даже другие области.
Таким образом, вы можете при необходимости загружать схемы из любого места.Вы можете создать себе фабрику, например:
schemas.get('PageSchema')
, которая будет возвращать схему, если это возможно, или None, если ее нет.
Вот и все!