Implementing Tuples with Named Items

Bryan belred at gmail.com
Tue Jan 10 00:41:28 EST 2006


in the python cookbook 2nd edition, section 6.7 (page 250-251), there a problem 
for implementing tuples with named items.  i'm having trouble understanding how 
one of commands work and hope someone here can explain what exactly is going on. 
  without copying all the code here, here is the gist of the problem:

from operator import itemgetter

class supertup(tuple):
     def __new__(cls, *args):
         return tuple.__new__(cls, args)

setattr(supertup, 'x', property(itemgetter(0)))

 >>> t = supertup(2, 4, 6)
 >>> t.x
 >>> 2


i understand what itemgetter does,

 >>> i = itemgetter(0)
 >>> i((2, 3, 4))
 >>> 2
 >>> i((4, 8, 12))
 >>> 4

i understand what property does, and i understand what setattr does.  i tested 
this problem myself and it works, but i can't understand how t.x evaluates to 2 
in this case.  how does itemgetter (and property) know what tuple to use?  in my 
  itemgetter sample, the tuple is passed to itemgetter so it's obvious to see 
what's going on.  but in the supertup example, it isn't obvious to me.


thanks,

bryan




More information about the Python-list mailing list