Я конвертирую код из python2 в python3 для newstyle
классов, используя future
. Мой проект в Джанго 1.11
У меня есть класс в forms.py как:
class Address:
...rest of code...
class AddressForm(Address, forms.ModelForm):
...rest of code...
в Python 2
, который преобразуется в:
from buitlins import object
class Address(object):
...rest of code...
class AddressForm(Address, forms.ModelForm):
...rest of code...
в Python 3
У меня есть тест на селен, который не проходит, когда эта форма вызывается после ее преобразования в Python3 со следующей ошибкой:
File "<path_to_venv>/local/lib/python2.7/site-packages/django/utils/six.py", line 842, in <lambda>
klass.__str__ = lambda self: self.__unicode__().encode('utf-8')
File "<path_to_venv>/local/lib/python2.7/site-packages/future/types/newobject.py", line 78, in __unicode__
s = type(self).__str__(self)
RuntimeError: maximum recursion depth exceeded
Однако, когда я удаляю импорт from buitlins import object
, тест проходит.
Но поскольку я добавил проверку в будущем, я получаю ошибку разницы в будущем, и поэтому каждый класс должен быть преобразован в новый стиль. Я хочу, чтобы он работал как в Python2, так и в Python3.
Есть ли способ, которым импорт модуля builtins
может повлиять только на один класс, но не на другие в файле forms.py
. Или есть другой способ справиться с этим?