@zlodiak

Как проверить наличие переменной?

Я создаю и уничтожаю переменную в экземпляре:

#!/usr/bin/env python3

class Person(object):
  def __init__(self, first_name, last_name):
    self.first_name = first_name
    self.last_name = last_name

  def dele(self):
    del self.last_name

  def pr(self):
    if self.last_name:
      print(self.last_name)
    else:
      print('var has been deleted')


p = Person('qqq', 'www')
p.dele()
p.pr()


Затем пытаюсь её вывести, но получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "./hello.py", line 20, in
p.pr()
File "./hello.py", line 12, in pr
if self.last_name:
AttributeError: 'Person' object has no attribute 'last_name'


Помогите пожалуйста понять в чём проблема. Я ведь перед выводом проверяю её существование.

LIVE DEMO здесь
  • Вопрос задан
  • 723 просмотра
Решения вопроса 1
@BJlaDuMup
def pr(self):
    try:
      print(self.last_name)
    except AttributeError:
      print('var has been deleted')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
YardalGedal
@YardalGedal
yeah boy
def pr(self):
    if hasatrr(self, 'last_name'):
        print(self.last_name)
    else:
        print('var has been deleted')

А можно и в одну строку
def pr(self):
    print(getattr(self, 'last_name', 'var has been deleted'))
Ответ написан
Комментировать
@Andy_U
А не лучше так?
def pr(self) -> bool:
    return 'last_name' in self.__dir__()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы