Вам это не нужно, оно уже есть:
>>> class Parent(): pass
...
>>> class Child(): pass
...
>>> Parent.__name__
'Parent'
>>> Child.__name__
'Child'
>>>
Но если вы действительно настаиваете на том, чтобы кататься по собственному желанию по любой причине, которую вы не удосужились объяснить, вы можете использовать собственный метакласс:
def camel_case_to_underscore(name):
# your code here
class NamedType(type):
def __new__(meta, name, bases, attribs):
attribs["name"] = camel_case_to_underscore(name)
return type.__new__(meta, name, bases, attribs)
class Parent(metaclass=NamedType):
pass
class Child(Parent):
pass