def runifmain(mainname):

    def deco(clas):
        if mainname == '__main__':
            clas().run()
return clas
return deco


@runifmain(__name__)
class B(A):
    pass
Избегайте запуска __name__ == '__main__' в подклассах Python с использованием родительской функции