class B(object):

    def name(self):
        return "I'm B!"


class C(object):

    def name(self):
        return "I'm C!"
D = {'A': A, 'B': B, 'C': C}

def __new__(cls, t):
    return cls.D[t]()
Pythonic способ присвоить экземпляр подкласса переменной, когда конкретная строка представлена ​​конструктору родительского класса