TypeError: init() takes exactly 3 arguments (4 given)
てどうゆう意味ですか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
pythonの(インスタンス)メソッドは第一引数にself
(オブジェクト自身)を取るルールになっています。
メソッドに3つの引数を渡したいのなら、self
を含めて4つの引数を受け取るように設計する必要があります。
python
1>>> class Hoge: 2... def __init__(a,b,c): 3... pass 4... 5>>> Hoge(1,2,3) 6Traceback (most recent call last): 7 File "<stdin>", line 1, in <module> 8TypeError: __init__() takes 3 positional arguments but 4 were given 9>>> class Hoge: 10... def __init__(self,a,b,c): 11... pass 12... 13>>> Hoge(1,2,3) 14<__main__.Hoge object at 0x7f9ec45c27b8>
投稿2018/11/13 11:31
総合スコア30935
0
3つの引数しか受け付けない関数に対して、4つの引数を与えたように思います。
xxx(a,b,c)であるべきところを、xxx(a,b,c,d)と書いてしまっている箇所があると思われる、ということです。
投稿2018/11/13 11:22
総合スコア1947
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
def __init__(a,b,c)って定義したら
他の定義する関数は4つの引数を与えちゃいけないということでよろしいでしょうか?
2018/11/13 11:33
自分でクラスを作られたんですかね?
最初の引数selfは呼び出し時には使わないので、コンストラクタに__init__(self,a,b)と定義したのであれば、呼び出し時はxxx(a,b)となります。
そのために数が合っていないのかもしれません。
↓参考
https://qiita.com/Usek/items/a206b8e49c02f756d636#%E3%82%B3%E3%83%B3%E3%82%B9%E3%83%88%E3%83%A9%E3%82%AF%E3%82%BF
退会済みユーザー
2018/11/13 11:34
解決しました!ありがとうございます!
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/11/13 11:33