1. ホーム
  2. python

関数が0個の位置引数を取るが、1個与えられた場合のPythonエラー

2022-02-16 13:58:32
<パス
class User():
	def __init__(self,fname,lname):
		self.fname=fname
		self.lname=lname
	
	def show_(self):
		print(self.fname.title()+self.lname.title())

users=User('harry ','potter')
users.show_()


上記のコードでは、Userというクラスを作成して、fnameとlnameという属性を持たせ、Userクラス内にshow_()というメソッドを定義して、ユーザーに関する情報を表示させています。

プログラムを実行すると、show_()は0個の位置引数を取りますが、1個が与えられましたというエラーが発生します。
意味は、関数show_()は引数を取らないが、関数には引数が渡される、しかしshow_()関数を呼び出すときは引数を書かない、ではなぜこのErrorが発生するのでしょうか?

これは、クラスに関連付けられているすべてのメソッド呼び出しが、自動的にインスタンス自体への参照である本当のパラメータ self を渡し、インスタンスがクラスのプロパティとメソッドにアクセスできるようにするためです。

** イニット の引数selfは自動的にshow_()に渡され、show_()は正式な参照なしに定義されているため、エラーを報告することになります。

修正: def show_(): を def show_(self) に変更。