Accessing an instance's __init__ args from outside the class

Alexander Eberts alex_eberts at videotron.ca
Mon Jul 14 14:36:31 EDT 2003


Duncan,

Thanks for your response - much appreciated. Do you know how the python
interpreter handles *args and **kwargs passed to a class's __init__ method?
(maybe the better question is "what section in the python docs describes how
class args are handled" :)

all the best,

Alex

"Duncan Booth" <duncan at NOSPAMrcp.co.uk> wrote in message
news:Xns93B8AC76381A5duncanrcpcouk at 127.0.0.1...
> "Alexander Eberts" <alex_eberts at videotron.ca> wrote in
> news:sfAQa.21645$O55.673402 at wagner.videotron.net:
>
> >  Is there any way to find out what arguments an object was called
> > with?
>
> Not in general.
>
> > Are the args stored with the instance?
>
> It depends on the object type. Some objects may save some or all of the
> arguments to the constructor, but it is up to each object to decide what
to
> do with its arguments. If you create your own class, and want to be able
to
> refer to the __init__ arguments after returning from __init__, then you
> must save the arguments in the object.
>
> So, for your original example you could do:
>
> >>> class Foo:
>     def __init__(self, *args):
>         self.args = args
>         print args                        # no problem here
>
>
> >>> someobj = Foo('bar', 'bleck')
> ('bar', 'bleck')
> >>> someobj.args
> ('bar', 'bleck')
>
> -- 
> Duncan Booth                                             duncan at rcp.co.uk
> int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
> "\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?






More information about the Python-list mailing list