2015-12-14 2 views
0

Как проверить, является ли переменная допустимым классом или типом? Я хочу его проверить, прежде чем передавать его в isinstance() Есть ли способ, кроме try catch? Я использую python2Как определить, является ли переменная допустимым классом или типом в python?

+2

Как бы переменная не имела никакого действительного типа? – timgeb

+2

Разве это не значит, что вы бы использовали isinstance? –

+0

скажите, например, если я делаю isinstance (a, {}), я получу ошибку типа. Я хочу убедиться, что второй параметр, который я передаю isinstance, действителен. –

ответ

4

Что касается моего комментария:

классов и типов являются экземплярами type, так сказать. Вот почему это будет работать:

>>> class foo(): 
    pass 

>>> t = foo 
>>> t 
<class '__main__.foo'> 
>>> isinstance(t,type) 
True 

EDIT - Это работает для Python3.x

На Python 2.x класс должен быть новый стиль один (т.е. наследуется от object)

class foo(object): 
    pass 
+0

Я боюсь, что ваш ответ работает только на Python3. OP использует Python 2.7 – Pynchia

+0

@ Pynchia, это справедливый момент, который я всегда забываю учитывать. Слава богу за обман. отредактирован, чтобы явно указать это. –

+0

BTW, OP говорит о переменных/экземплярах, я понимаю, а не классы. т. е. 't = foo()'. И в этом случае вышеприведенное решение выходит из строя под python 2 (либо с использованием классов старого или нового стиля. Кстати, почему вы используете parens в объявлении класса?) – Pynchia

Смежные вопросы