Ответ 1
instance.__class__.__name__
Пример:
>>> class A():
pass
>>> a = A()
>>> a.__class__.__name__
'A'
Я хочу избежать вызова множества функций isinstance()
, поэтому я ищу способ получить конкретное имя класса для переменной экземпляра в виде строки.
Любые идеи?
instance.__class__.__name__
Пример:
>>> class A():
pass
>>> a = A()
>>> a.__class__.__name__
'A'
<object>.__class__.__name__
вы также можете создать 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
получает эту функцию и применяет ее к параметру.
конечно, было бы гораздо лучше использовать "настоящий" ООП