0

type()クラスに対する呼び出しの出力をカスタマイズするにはどうすればよいですか?

__add__クラスにメソッドを実装しています。ユーザーが間違って使用しようとするTypeErrorと、次のメッセージが表示されます。

err_msg = "unsupported operand type(s) for -: '{}' and '{}'"
raise TypeError(err_msg.format(type(self), type(other)))

出力は次のとおりです。

TypeError: unsupported operand type(s) for +: '<type 'instance'>' and '<type 'int'>'

'<type 'my_class'>'代わりに読み取るにはどうすればよいですか?

4

2 に答える 2

3

type返されるものを変更したくありません。クラスを新しいスタイルのクラスにしたい場合、(他の多くの利点とは別に) このクラス オブジェクトの文字列表現が、すべての適切な型 (組み込みを含むがこれに限定されない) と同様に、その名前を言及することを意味します。変化する

class my_class:
    ...

class my_class(object):
    ...

my_classそれ自体が古いスタイルである別のクラスから継承する場合は、代わりにそのクラスを新しいスタイルにします。

于 2013-10-13T14:46:23.820 に答える
0

簡単な答えはtype()、my_class には使用せず、代わりに文字列を使用することです。

raise TypeError(err_msg.format("<type 'my_class'>", type(other)))
于 2013-10-13T14:47:35.803 に答える