Edited, original question below.
As pointed out by @MiH this question is nearly identical to Get subclass name?
Is there a way to get the name of the actual/run-time class of an object rather than the name of the class where a method is defined?
I call a base class method on derived class objects (such objects do not override the method), o.__class__.__name__ gives me the name of the class of the base class, not the name of the run-time class.
Obviously I want to avoid defining a method in each derived class just to get its class name, the objective of the question is to know if there is a way to avoid that.