#python #python-3.x
#python #python-3.x
Вопрос:
if attr[:12] == '_Request__r_':
name = attr[12:]
if hasattr(Request, 'get_' name):
getattr(self, 'get_' name)()
return getattr(self, attr)
raise AttributeError, attr
def get_method(self):
if self.has_data():
return "POST"
else:
return "GET"
raise AttributeError, attr
^
SyntaxError: invalid syntax
Как мне исправить эту ошибку?
Как вы можете видеть выше, я добавил строки кода, выдающие ошибку.
Комментарии:
1. Просматриваю документацию о том, как создавать исключения в python 3 ( docs.python.org/3.7/reference /… ) по сравнению с python 2 ( docs.python.org/2.7/reference /… ) вы можете узнать, как изменилась спецификация. Потребуется много таких изменений, и такие инструменты, как 2to3, предложенные @Mark, могут значительно упростить этот переход.
Ответ №1:
Согласно документации 2to3:
raise Преобразует raise E, V в raise E (V) и raise E, V, T в raise E (V).с помощью_traceback(T). Если E является кортежем, перевод будет неправильным, потому что замена кортежей для исключений была удалена в Python 3.
Так что это должно быть:
raise AttributeError(attr)
Комментарии:
1. Извините, я не силен в преобразовании python2 в код python3, можете ли вы преобразовать это также? ошибка повышения значения, «неизвестный тип URL: %s» % self.__ оригинал ^ Ошибка синтаксиса: недопустимый синтаксис
2. @John Почему бы не запустить скрипт 2to3 для переноса вашего кода? Ссылка есть в моем ответе. В таком случае это просто
raise ValueError("unknown url type: %s" % self.__original")
.3. спасибо, делает ли 2to3 это автоматически? Или я должен зайти и внести изменения?
4. @John Да, прочитал документацию .
5. Извините, я пошел дальше и прочитал документацию. У меня другая ошибка, в ней говорится, что мне не хватает модуля mimetools