Как получить конкретное имя класса в виде строки?

Я хочу избежать вызова множества функций isinstance(), поэтому я ищу способ получить конкретное имя класса для переменной экземпляра в виде строки.

Любые идеи?

Ответ 1

 instance.__class__.__name__

Пример:

>>> class A():
    pass
>>> a = A()
>>> a.__class__.__name__
'A'

Ответ 2

<object>.__class__.__name__

Ответ 3

вы также можете создать dict с самими классами в качестве ключей, не обязательно с именами классов

typefunc={
    int:lambda x: x*2,
    str:lambda s:'(*(%s)*)'%s
}

def transform (param):
    print typefunc[type(param)](param)

transform (1)
>>> 2
transform ("hi")
>>> (*(hi)*)

здесь typefunc - это dict, который отображает функцию для каждого типа. transform получает эту функцию и применяет ее к параметру.

конечно, было бы гораздо лучше использовать "настоящий" ООП