#python
Вопрос:
У меня есть глубоко вложенный объект того же класса, я хочу обнаружить ошибку атрибута трассировки, чтобы я мог распечатать сообщение(«на этом уровне нет атрибута»), а не отображать сообщение об ошибке атрибута трассировки.
Комментарии:
1. используйте try-except, а затем распечатайте сообщение в поле except.
2. Рассматривали ли вы возможность использования
.get()
для извлечения атрибута?3. @КлаусД. Спасибо, это именно то, что я искал
4. Кстати, с возвращением.
Ответ №1:
Вы можете использовать это try-except
предложение здесь:
try: #Your code here (Whatever thing gets to an attribute error) except AttributeError: print("there is no attribute in this level")
Ответ №2:
Используйте метод магии getattr.
def __getattr__(self, name): print("there is no attribute in this level")
Комментарии:
1. Это будет выведено на консоль и возвращено
None
при доступе к отсутствующему атрибуту. Я очень сомневаюсь, что это то, чего вы хотите…2. Вся цель цикла try except, как и в любом языке с методом try, состоит в том, чтобы получить доступ к ошибке до ее вывода на консоль. изменение сообщения почти гарантированно будет наиболее распространенным вариантом использования, за исключением, возможно, записи в a
logfile
или привязкиstderr
кstdout
нему . Обычно считается хорошей практикой, когда вам нужно скрыть свою реализацию от конечного пользователя. Если ваши пользователи могут видеть сообщения об ошибках системы, они могут распознавать или не распознавать команды или функции, которые их вызвали.