Index et Tranche un Générateur en Python

Permet de dire que j'ai un générateur de fonction qui ressemble à ceci:

def fib():
    x,y = 1,1
    while True:
        x, y = y, x+y
        yield x

Idéalement, je pouvais fib()[10] ou fib()[2:12:2] pour obtenir des indices et des tranches, mais actuellement, je utiliser itertools pour ces choses. Je ne peux pas utiliser un générateur pour une baisse de remplacement pour les listes.

Je crois que la solution sera de les envelopper fib() dans une classe:

class Indexable(object):
    ....

fib_seq = Indexable(fib())

Ce qui devrait Indexables ressembler pour faire ce travail?