3

__new__機能が壊れないようにPythonでの標準的な動作を実装する正しい方法は何ですか?

使用しました

class Test:
    def __new__(cls, *args, **kwargs):
        return object.__new__(cls, *args, **kwargs)

t=Test()

一部のPythonバージョンでは、DepreciationWarningsがスローされます。インターネットで私はと一緒に、またはと一緒に何かを見たことがsuper()ありtype()ます。違いは何ですか?どちらが好ましいですか?

4

1 に答える 1

5

あなたは書くべきです

return super(Test, cls).__new__(cls, *args, **kwargs)

これはドキュメントで推奨されています(2.xでも同じです)。

使用する理由superは、相続ツリーの線形化に対処するためです。適切なスーパークラスがであるかどうかはわかりません。objectしたがって、常にを使用する必要がありますsuper

于 2012-07-04T15:29:25.690 に答える