Лучшая возвращаемая политика в Python - PullRequest
1 голос
/ 02 апреля 2012

Я искал решение «как это должно быть сделано» для следующей задачи:

У меня есть класс с именем InputChecker, который принимает входной файл, проверяет его содержимое иесли все хорошо, возвращает файл следующему классу (ExpofitAgent) для дальнейших действий.

Однако, если файл не в форме, как должно быть, InputChecker генерирует сообщение об ошибке, которое говоритв какой строке файла была обнаружена ошибка.

InputChecker не печатает ошибку, она просто генерирует сообщение, которое будет напечатано позже.

Так как я делаю это вPython мой метод может вернуть файл или строку.Как проверить, исправен ли файл, без необходимости добавления дополнительного флага?

Ответы [ 2 ]

21 голосов
/ 02 апреля 2012

Вызовите исключение: http://docs.python.org/tutorial/errors.html

Даже если оператор или выражение синтаксически верны, это может вызвать ошибку при попытке выполнить его. Ошибки, обнаруженные во время выполнения, называются исключения и не являются безусловно фатальными ... Однако большинство исключений не обрабатываются программами и приводят к сообщениям об ошибках ...

3 голосов
/ 02 апреля 2012

Мне трудно думать о ситуации, когда ответ Марцина об использовании исключения не будет лучшим ответом.

Однако, если вам нужна альтернатива, в Python легко возвращать более одной вещи за раз, используя кортеж.

def myfunc():
    # ...
    if file_is_ok:
        return myfile, None
    else:
        return None, error_string

mf, es = myfunc()
if es:
    # show error string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...