Po prostu tworzenie klasy iteracji jest dość łatwe przy użyciu klas meta (więc inne odpowiedzi tutaj). Jednak chcę uczynić klasę iterowalną, a także umożliwiającą "iterację podgrupy opartą na dziedziczeniu". Przykład mojego użycia:Uczyń klasę iterowalną dziedzicząc
Pierwsza pętla działa - iteruje po wszystkich instancjach i elementach potomnych litery "A". Jednak druga pętla powinna przebiegać tylko w określonej podgrupie "A" - tych, które są instancjami dziecka "B" (lub dzieci poniżej linii).
(W jaki sposób) można to osiągnąć najłatwiej? W ten sposób dodanie więcej podklas wymaga najmniej pracy/zmiany?
To wygląda naprawdę dobrze. Zastanawiam się - podczas iteracji nie będzie to iterować _regionu za każdym razem, gdy przechodzę do następnego elementu. (innymi słowy iteracja n elementów zajmuje teraz O (n^2) zamiast O (n) czasu? – paul23
, ponieważ iterator zwracany przez generator jest sam generatorem, może to może być po prostu 'return (c dla c in cls. _registry if isinstance (c, cls)) ' – Pynchia
@Pynchia - Naprawiono, dziękuję –