Scott David Daniels wrote: > Here is a Mix-in class I just built for testing. > It is quite simple, but illustrates how Mixins > can be used. > > class Pending(object): > _pending = iter(()) > def __new__(class_, *args, **kwargs): > try: > return class_._pending.next() > except StopIteration: > return super(Pending, class_).__new__(class_, > *args, **kwargs) > > Now for the use: > > class Float(Pending, float): pass > > Float._pending = iter(range(4,7)) > > print [Float(x*(x+1)//2) for x in range(6)] > > Possibly by using itertools functions such as chain as in: > Klass._pending = itertools.chain(generate_some(), Klass._pending) > you can inject fixed values to simplify testing.
If you're willing to allow for issubclass() to fail you can do without a mixin: from itertools import chain, repeat def preload(class_, iterable): items = chain( (lambda *args, **kw: item for item in iterable), repeat(class_)) return lambda *args, **kw: items.next()(*args, **kw) float = preload(float, "ABC") print [float(x) for x in range(6)] issubclass(float, float) # TypeError Argh :-) Peter -- http://mail.python.org/mailman/listinfo/python-list