Python класс-зависимый шаблон?

Я хочу создать виджет в зависимости от класса объекта, есть ли простой способ сделать это в мако? например

класс A может иметь атрибуты A и B

в то время как

класс B может иметь атрибуты A, B и C

есть шаблон для этого?

я хочу сделать суперкласс, который они наследуют, но если у меня есть функция print и я вызываю ее, вызывая obj.print(), но я не хочу помещать код шаблона в функции класса

например, у меня есть виджет, который идет

<div>obj.a</div>
<div>obj.b</div>
<div>obj.c</div>
<div>obj.d</div>

но если это объект B, я хочу, чтобы он пошел

<div>obj.a</div>
<div>obj.b</div>
<div>obj.c</div>

и т.д., но было интересно, если есть чистый способ сделать это

1 ответ

Решение

Сделай метод, который возвращает [a, b] в классе А и [a, b, c] в классе Б.

Тогда вы можете сделать:

% for stuff in thing.return_list_of_stuff:
    <div>${stuff}</div>
% endfor

(Я никогда не использовал мако, поэтому синтаксис может быть неправильным.)

Другие вопросы по тегам