Это звучит как то, что можно было бы сделать довольно красиво и гибко с помощью компонентной архитектуры, например zope.components. Компоненты являются своего рода сверхгибкими композиционными шаблонами.
В этом случае я, вероятно, в конечном итоге сделаю что-нибудь, когда вы загрузите данные, чтобы также установить для них интерфейсы маркеров в зависимости от некоторой информации, например, если age> = 18, вы устанавливаете интерфейс IAdult и т. Д. Затем вы можете получить информация для взрослых, выполнив
adultschema = IAdultSchema(person)
или что-то в этом роде.
(Изменить: На самом деле я бы, вероятно, использовал
queryAdapters(person, ISchema)
чтобы получить все схемы за один раз. :)
Компонентная архитектура может быть излишней, но как только вы привыкли к такому мышлению, многие проблемы становятся тривиальными. :)
Посмотрите, как Брэндонс отлично говорит о PyCon: http://www.youtube.com/watch?v=UF77e2TeeQo
И мое вступительное сообщение в блоге: http://regebro.wordpress.com/2007/11/16/a-python-component-architecture/