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