>>> class MyInt(int):
... def __rmod__(self, other):
... return 42
...
>>> class MyStr(str):
... def __rmod__(self, other):
... return 'wat'
...
>>> 0 % MyInt()
42
>>> '%r' % MyStr()
"''"
int
のサブクラスは、このBinOpを反射側から制御することができますが、str
はできないのですか?これは文書化されたdatamodelと矛盾しているようです。文字列に対して__rmod__が正しく動作しないのはなぜですか?
この機能を使用して、logging
フレームワークの中括弧スタイルのハンドラ/フォーマッタを提供する、非侵入型の下位互換性のある拡張機能を作成したいと考えていましたが、それはバグですか?
[This](https://bugs.python.org/issue28598)が適切と思われます。 – vaultah
LinuxのPython 3.6.0。ベースとしての 'collections.UserString'にも問題があります。ベースとなる 'bytes'はそうではありません。 – wim