Can a base class know if a method has been overridden?

Raymond Hettinger python at
Tue Sep 25 00:04:56 CEST 2007

On Sep 24, 8:23 am, Ratko <rjago... at> wrote:
> Hi all,
> I was wondering if something like this is possible. Can a base class
> somehow know if a certain method has been overridden by the subclass?
> I appreciate any ideas.
> Thanks,
> Ratko

It's not hard.  Both bound and unbound methods have an im_func
attribute pointing to the underlying function code.  So you can check
for overrides by testing whether the underlying functions are the

>>> class A:
	def p(self): pass
	def q(self): pass

>>> class B(A):
	def q(self): pass

>>> b = B()
>>> b.p.im_func is A.p.im_func     # Verify that b.p runs A.p
>>> b.q.im_func is A.q.im_func     # Verify that b.q overrides A.q



More information about the Python-list mailing list