Если посмотрите в исходник TreeModel, то увидите, что он почти пустой - фактически вся работа делается в class callback, который декорирует тело класса модели свойствами NodeInterface. Можете повторить в своём коде, создав обычную модель Foo и унаследовать от неё декорированную FooTree.
Или можно использовать mixin с набором полей и прочими свойствами, общими для обычной и деревянной моделей. Выглядеть всё равно будет малость кривовато и потребует разъяснений в коммментариях, так что я бы сделал а-ля TreeModel и не сильно заморачивался чистотой архитектуры.
|