str
インスタンス変数を追加して、に基づいた単純な派生クラスを作成しようとしていますflag
。理解できない理由で、フラグをコンストラクターに渡そうとするとエラーが発生します。
>>> class Strvalue(str):
def __init__(self, content, flag=None):
str.__init__(self, content)
self.flag = flag
>>> Strvalue("No problem")
'No problem'
>>> Strvalue("Problem", flag=None)
Traceback (most recent call last):
File "<pyshell#113>", line 1, in <module>
Strvalue("Problem", flag=None)
TypeError: str() takes at most 1 argument (2 given)
成功した呼び出しで、コンストラクターが実際に呼び出されることを確認しました。タイプミスやそのようなものはStrvalue
ありません。__init__
では、何が起こっているのでしょうか。
編集:この質問(および@Martijnの回答)によると、この問題はオーバーライド__new__
することでも回避できます。問題は、なぜこれが起こったのかということでした。