En Sat, 10 Mar 2007 02:36:41 -0300, Alan Isaac <[EMAIL PROTECTED]> escribió:
> I am probably confused about immutable types. > But for now my questions boil down to these two: > > - what does ``tuple.__init__`` do? Nothing. tuple.__init__ does not even exist, as tuples are immutable, they are fully initialized with __new__ (the actual constructor) > - what is the signature of ``tuple.__init__``? Already said; it does not exist. > These questions are stimulated by > http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/303439 > Looking at that, what fails if I leave out the following line? :: > > tuple.__init__(self) > > For exaple, if I try:: > > class Test1(tuple): > def __init__(self,seq): > pass > > I seem to get a perfectly usable tuple. > What initialization is missing? Nothing! > Next, the signature question. > I'm guessing the signature is something like > tuple.__init__(self, *args, **kwargs) > with nothing done with anything but self. > As a trivial illustrative example:: > > class Test2(tuple): > def __init__(self,seq): > tuple.__init__(self, "foo", "bar") > > seems to cause no objections. And does nothing; the tuple is already constructed (try with "print self" before the tuple.__init__ call). (That recipe is a bit old, anyway, I think that tuples *never* have used __init__) Better look for other "named tuples"/"record"/"struct" recipes on the CookBook. The signature is like you said, but it's not a tuple method, it's an object method instead: py> tuple.__init__ <slot wrapper '__init__' of 'object' objects> The only important thing is that it says: of 'object' objects, not: of 'tuple' objects. Compare with: py> tuple.__len__ <slot wrapper '__len__' of 'tuple' objects> > One last question: where should I have looked > to answer these questions? Uhm... Python Language Reference, section 3.4.1 Python/C API Reference Manual, section 10.3, Type objects. The C source code, object.c Or asking here :) -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list