web-dev-qa-db-ja.com

継承を使用して__repr__関数を記述する正しい方法

私はOOP pythonで実験しており、__repr__関数の継承。親クラス関数は次のように見えたため:

def __repr__(self):
    '''Returns representation of the object'''
    return("{}({!r})".format("Class name", self._param))

次のような一般的なアプローチ(子供のクラスにも適している)を使用する方が良いかどうかを知りたかったのです。

def __repr__(self):
    '''Returns representation of the object'''
    return("{}({!r})".format(self.__class__.__name__, self._param))

または、すべてのクラスで関数をオーバーライドすることをお勧めします。

また、エンコーディング部分は無視するので無視してください。

12
dec0de_d00dle

はい--それは単に「OK」ではありませんが、ほとんどすべてのプロジェクトおよびクラス階層でより実用的です。

実際、これはクラス継承を使用する場合のほぼ完璧な「教科書の例」であり、スーパークラスのコードを再利用できます。

1
jsbueno