Легкий способ проверить, что переменная определена в 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.