Consider: class a: def b(self,x): print "call #1" def b(self,x): print "call #2" v = a() v.b(42) This code raises no warning, and can be executed ('call #2' will be printed), on Python 2.1.1 (ActivePython Build 212). Bug or feature?