newstyle
を使用してクラスのコードを python2 から python3 に変換していfuture
ます。私のプロジェクトはDjango 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
、テストはパスします。
しかし、将来のチェックを追加したため、将来の差分エラーが発生するため、すべてのクラスを newstyle に変換する必要があります。Python2 と Python3 の両方で動作するようにしたい。
このモジュールbuiltins
モジュールのインポートが、ファイル内の他のクラスではなく、1 つのクラスにのみ影響する方法はありforms.py
ますか。または、これを処理する他の方法はありますか?