I'm having difficulty understanding why this doesn't work:

import sys, new, inspect

class T:
     def foo(self):
        yield 1
        yield 2
        yield 3


t = T()

ic = t.__class__
for key in ic.__dict__.keys():
     if inspect.isfunction(ic.__dict__[key]):
         im = new.instancemethod(ic.__dict__[key], t, ic)


print t.foo
print im

print 't.foo().next() = %s' % t.foo().next()
print 'im.next() = %s' % im.next()


 >>> ================================ RESTART ==============
 >>>
<bound method T.foo of <__main__.T instance at 0x00B7ADA0>>
<bound method T.foo of <__main__.T instance at 0x00B7ADA0>>
t.foo().next() = 1

Traceback (most recent call last):
   File "D:/python242/Test Scripts/trial.py", line 22, in -toplevel-
     print 'im.next() = %s' % im.next()
AttributeError: 'function' object has no attribute 'next'
 >>>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to