TypeError: [関数名] takes 0 positional arguments but 1 was given
原因
エラー内容
[関数名]は0個の引数を取るが、1つ引数が与えられた
エラー例
class HogeClass:
def hoge():
print("ほげ〜")
def call_hoge():
HogeClass.hoge()
hoge = HogeClass()
hoge.call_hoge()
# TypeError: call_hoge() takes 0 positional arguments but 1 was given
解決策
解説
クラスメソッドを呼び出すと、そのメソッドの第一引数には必ずselfが渡されるようです。(Pythonの仕様)
元のメソッドの方では引数を受け取るような処理を記載していないのでエラーになるわけですね。
なので引数にselfを受け取るように処理を修正します。
参考文献:
クラスメソッドの引数にselfを使う理由 | Code for Python -パイソンを深く理解するためのサイト-
対応例
class HogeClass:
def hoge():
print("ほげ〜")
def call_hoge(self):
HogeClass.hoge()
hoge = HogeClass()
hoge.call_hoge()
# ほげ〜