Steven D'Aprano wrote: > If you want iterator operations "similar to itertools", why does this > mean you need to replace anything? Just create your own iterators. > > Or use pre-processing and post-processing to get what you want. > > Can you show an example of what you would like to happen?
Steven, my classes repesent musical objects. The fundamental paradigm I want to apply is that of a Sequence, i.e. the most abstract aspect of music is that "things" occur in a certain order. Then I have a TimedSequence class, which is a Sequences whose elements have a "time" attribute. I now want to be able to append such Sequences by writing s1 = TimedSequence (time=1,'a') # one-element Sequence s2 = TimedSequence (time=2,'b') y = s1*2 + s2 Naively appending those sequences would give me Time=1,'a' Time=1,'a' Time=2,'b' but this is not what I want. Time needs to progress if I append a sequence to another. So what I really want is something like Time=1,'a' Time=2,'a' Time=3,'b' This implies that time is shifted to the next integer, but this is not always the case. I need to know about some kind of "alignment". In music this translates to "let a sequence start at the beginning of a bar", or half bar or quarter note or whatever. So I want to write y = s1*2 + s2(align=10) which should iterate as Time=1,'a' Time=2,'a' Time=10,'b' I have no difficulty passing "align" to the object (using __call__) and use it while I furnish my own __iter__() method. However I don't quite see how I can do this with bare itertools, though I may be wrong here. Bare in mind that it is not only about somehow getting the job done. The beauty of the resulting syntax is also important. -- http://mail.python.org/mailman/listinfo/python-list