Properties relevant to finding what class supplies a method

May 20, 2007

For my own future reference if nothing else, here's some properties relevant to finding what superclass supplies a method:

On super() objects, we have:

__self__ the object you are calling super() about, ie the second argument.
__self_class__ the actual class of said object; equivalent to .__self__.__class__ but more convenient.
__this_class__ the class that super() was invoked for, ie its first argument; this is where you are right now in the superclass hierarchy.

(Because the MRO varies by class, you need both the real class of the object and the current class.)

Unbound methods from Python classes show up as type 'unbound method' in repr(), and have an im_class attribute that points to their class (and an im_func attribute that points to the actual Python function).

Some methods from builtin classes, such as object.__init__, show up as type 'slot wrapper'. These have an __objclass__ attribute that points to their class.

Other methods from builtin classes, such as object.__new__, show up as type 'built-in method'. These have a __self__ attribute that points to their class.

Fortunately you can tell the three types of objects apart based on what attribute they have, because nothing has more than one of them (so far; this is where I start to think that this is fishing in the implementation defined waters).

Written on 20 May 2007.
« Weekly spam summary on May 19th, 2007
Linux is a Unix »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Sun May 20 22:06:59 2007
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.