design question: generator object with other attributes

A

Alan Isaac

Essentially I want a generator that I can query about
its characteristics. (E.g., a random number generator
that I want to be able to ask about is distributional
parameters.)

I am thinking of a class that wraps a generator.
An object of this class will have a ``next`` method that simply
returns the value the object get by calling the wrapped
generator.

A reasonable approach?

Thanks,
Alan Isaac

PS Here is a useless class to illustrate the basic idea
that you could have both attribute access and a
generator-connected ``next`` method.

class Start2Stop:
def __init(start,stop):
self.start = start
self.stop = stop
self.numgen = (i for in in xrange(start,stop))
def next(self):
return self.numgen.next()
 
R

Robert Kern

Alan said:
Essentially I want a generator that I can query about
its characteristics. (E.g., a random number generator
that I want to be able to ask about is distributional
parameters.)

I am thinking of a class that wraps a generator.
An object of this class will have a ``next`` method that simply
returns the value the object get by calling the wrapped
generator.

You will probably also need to define

def __iter__(self):
return self

if I remember correctly.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
 
J

James Stroud

Alan said:
Essentially I want a generator that I can query about
its characteristics. (E.g., a random number generator
that I want to be able to ask about is distributional
parameters.)

I am thinking of a class that wraps a generator.
An object of this class will have a ``next`` method that simply
returns the value the object get by calling the wrapped
generator.

A reasonable approach?

Thanks,
Alan Isaac

PS Here is a useless class to illustrate the basic idea
that you could have both attribute access and a
generator-connected ``next`` method.

class Start2Stop:
def __init(start,stop):
self.start = start
self.stop = stop
self.numgen = (i for in in xrange(start,stop))
def next(self):
return self.numgen.next()

In case you are having problems, "__init(start,stop)" should be spelled
"__init__(self, start, stop)".

James
 
A

Alex Martelli

Alan Isaac said:
Essentially I want a generator that I can query about
its characteristics. (E.g., a random number generator
that I want to be able to ask about is distributional
parameters.)

I am thinking of a class that wraps a generator.
An object of this class will have a ``next`` method that simply
returns the value the object get by calling the wrapped
generator.

A reasonable approach?

Sure, given the undiscussed constraints.
Thanks,
Alan Isaac

PS Here is a useless class to illustrate the basic idea
that you could have both attribute access and a
generator-connected ``next`` method.

class Start2Stop:
def __init(start,stop):
self.start = start
self.stop = stop
self.numgen = (i for in in xrange(start,stop))
def next(self):
return self.numgen.next()

Don't forget to add:

def __iter__(self): return self


Alex.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top