7

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ますか。または、これを処理する他の方法はありますか?

4

3 に答える 3