Pythonでは、組み込みint型を拡張しようとしています。そうすることで、私は、コンストラクタにいくつかのkeywoard引数に渡したいので、私はこれを行う:C(3)
を呼び出すと、正常に動作しながら、しかしPython:__init__のためにintとMROを拡張する
class C(int):
def __init__(self, val, **kwargs):
super(C, self).__init__(val)
# Do something with kwargs here...
を、C(3, a=4)
ができます:
'a' is an invalid keyword argument for this function`
とC.__mro__
は予想を返します。
(<class '__main__.C'>, <type 'int'>, <type 'object'>)
しかし、Pythonが最初int.__init__
を呼び出そうとしているようだ...誰もがなぜ知っていますか?これは通訳のバグですか?