はじめに
pythonでクラスを新しくclassを作成しようとしていた時にエラーが発生しました。
今回はその時のエラーの内容と対処方法について調べたのでそのメモになります。
エラー
まず発生したエラーですが
TypeError: __init__() missing 1 required positional argument: '***'
とうものでした(‘***’部分は任意の言葉)
エラーの内容を訳すと
「TypeError: init() が必要とする引数 ‘****’ が足りません」
という意味になります。
原因と対処法
エラーの内容からなんとなく想像できると思いますが、クラスでインスタンスを生成後に最初に実行される__init()__で引数の問題が起きています。
例ではクラスでしたが、一般的にこのエラーメッセージは、特定のメソッドへの必要な引数が渡されていないときに発生します。
次はエラーが発生する簡単なプログラムです。
class MyClass:
def __init__(self, parent):
self.parent = parent
# MyClassのインスタンスを作成しようとするも、必要な引数が'parent'が渡されていません
instance = MyClass()
これを実行するとすると
「instance = MyClass()
TypeError: __init__() missing 1 required positional argument: ‘parent’」
と6行目でエラーになります。
(引数の‘parent’は例で、実際は作成したプログラムによります)
次はエラーを直したソースコードです。
class MyClass:
def __init__(self, parent):
self.parent = parent
# MyClassのインスタンスを作成する際に必要な引数 'parent' を渡します
parent_instance = MyClass('parent_value')
これを実行すると問題なく実行されます。
このエラーは主に以下の場合に起きやすいです:
- 関数やメソッドを呼び出す際に必要な引数を渡し忘れた場合
このエラーを避けるためには、関数やメソッドを呼び出す際には必要な引数がすべて渡されていることを確認する必要があります。
さいごに
ということで今回は関数の引数不足によって発生するエラーでした。
呼び出し先の関数やクラスの定義が別ファイルにある場合などは、こうした引数の過不足のミスというのは起きやすいと思います。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。