You cannot subclass a generator that is defined as a function using yield , but you can use it in another generator.
Just take this simple one:
def alphagen(n=27): if n<0 or n > 27: n = 27 for i in range(n): yield chr(ord('A') + i)
You are getting:
>>>> [ a for a in alphagen(10)] ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
You can use it in:
def alphastartgen(n=27): resul = "" for i in alphagen(n): resul += i yield resul
And now you get:
>>> [ a for a in alphastartgen(8) ] ['A', 'AB', 'ABC', 'ABCD', 'ABCDE', 'ABCDEF', 'ABCDEFG', 'ABCDEFGH']
source share