親クラスの__init__に渡す引数と、子クラスで使う引数を変えたい場合
タイトルのような状況は、DjangoのFormを使っていて起きました。
Formを継承したFormを作成した時に、親のFormの__init__を呼び出す必要があったのですが、親のFormにそのまま余計な引数を渡すと親FormにはKeyErrorが起きるため、余計な引数を__init__を呼ぶ前に除いておく必要がありました。
なので、子のFormにおいて必要な要素と処理をそれぞれfield_nameとprocessingとしたときの例を下に載せておきます。クラス内でも処理の順番によってエラーが出たり上手くいなせたりするんだという当然のことに気づいたので上手く使っていきたいと思います。
class ChildForm(ParentForm): def __init__(self, *args, **kwargs): if kwargs.get('field_name', None): processing(kwargs['field_name']) kwargs.pop('field_name') super(ChildForm, self).__init__(*args, **kwargs)