Легкий способ проверить, что переменная определена в python?
Есть ли способ проверить, определена ли переменная (член класса или автономная) с указанным именем? Пример:
if "myVar" in myObject.__dict__ : # not an easy way
print myObject.myVar
else
print "not defined"
Ответы
Ответ 1
Компактный способ:
print myObject.myVar if hasattr(myObject, 'myVar') else 'not defined'
htw путь более Pythonic, тем не менее.
hasattr()
отличается от x in y.__dict__
, хотя: hasattr()
учитывает унаследованные атрибуты класса, а также динамические, возвращаемые из __getattr__
, тогда как y.__dict__
содержит только те объекты, которые являются атрибутами y
.
Ответ 2
try:
print myObject.myVar
except NameError:
print "not defined"
Ответ 3
Паоло прав, может быть что-то не так, как вы делаете, если это необходимо. Но если вы просто делаете что-то быстрое и грязное, вы, вероятно, не заботитесь о Idiomatic Python, то это может быть короче.
try: x
except: print "var doesn't exist"
Ответ 4
Чтение и/или трюки в python:
'a' в locals() и
Ответ 5
Чтобы проверить, определена ли переменная myvar:
result = dir().count('myvar')
Если myvar определен, результатом будет 1
, иначе это будет 0
.
Это отлично работает в версии 3.1.2 Python.