On 08/09/2011 07:11 PM, Terry Reedy wrote:
On 8/9/2011 5:43 PM, Gelonida N wrote:
Now I wondered whether there is any way to  implement a class such, that
I can write

for val in MyClass:
        print val

And what are the items in a class that you expect that to produce?

I can see doing something like

  class MyClass:
    instances = []
    def __init__(self, *args, **kwargs):
      self.instances.append(self)
      # ...

  a = MyClass(...)
  b = MyClass(...)
  for instance in MyClass:
    do_something(instance)

I was curious/surprised to find that

  class MyClass:
    instances = []
    @classmethod
    def __iter__(cls):
      for i in cls.instances:
        yield i
    def __init__(self):
      self.instances.append(self)

didn't work as I expected since MyClass then has an __iter__ property that should know about the class.

-tkc



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to