What is "self"?
Diez B. Roggisch
deets at nospam.web.de
Mon Sep 26 08:45:09 EDT 2005
> This still seems not quite right to me... Or more likely seems to be
> missing something still.
>
> (But it could be this migraine I've had the last couple of days
> preventing me from being able to concentrate on things with more than a
> few levels of complexity.)
>
> Playing around with the shell a bit gives the impression that calling a
> method in a instance gives the following (approximate) result...
>
> try:
> leader.__dict__["set_name"]("John")
> except:
> type(leader).__dict__["set_name"].__get__(leader, "John")
> # which results in...
> # Person.set_name(leader, "John")
> except:
> raise( AttributeError,
> "%s object has no attribute %s" \
> % (leader, "set_name") )
>
>
> Of course this wouldn't use the object names directly... I guess I'll
> need to look in the C object code to see exactly how it works. But the
> links you gave help.
I guess you mean to indent the whole part after the first except and put
a try beforehand?
Apart from that you seem to be right - there can very well be values in
the class dict that don't follow the descriptor-protocol. However my
playing around with this stuff indicates that the creation of bound
methods relies on the method being wrapped in a descriptor - otherwise,
you get the notorious TypeError
set_name() takes exactly 1 argument (0 given)
as the binding doesn't occur.
Regards,
Diez
More information about the Python-list
mailing list