3

strには、__ rmod __、__ rsub__、__rmul__などの他のメソッドがあります

intには__radd__メソッドがありました

奇妙な、そして私はその理由を知りたいのです。

最初の項にメソッドが追加されたときに呼び出されるraddbeeingの例:

>>> class STR(str):
...     def __radd__(self, other):
...             print "jeje"
...             return other.__add__(self)
... 
>>> 'aaaaa' + STR('bbbbb')
jeje
'aaaaabbbbb'
4

2 に答える 2

1

型は、使用するメソッドのみを定義します。文字列に追加できるオブジェクトは他の文字列または Unicode オブジェクトだけなので、一般的な__radd__方法は必要ありません。 __rmul__文字列を複製できます:

>>> 4 * 'abc'
'abcabcabcabc'

なぜ必要なのかはわかりません__rmod__が、何らかの形でフォーマットに関連しています。のように、単一の引数で書式設定の実装が容易になる可能性があり"Hello %s" % 'world'ます。わからない。あなたの主張に反して、__rsub__str オブジェクトにはありません。

つまり、これらのメソッドは、実際に何かを行う場合にのみ定義されます。

于 2010-02-06T14:39:56.653 に答える