この自己パラメーターを追加する必要があるのはなぜですか
def function(self):
クラス内でメソッドを定義すると、オブジェクト インスタンスを最初のパラメーターとして渡す記述子が自動的に作成されるためです。これを回避したい場合は、 @staticmethod デコレーターを使用するか、クラスの外で関数を定義してください。
言語がこのように設計されている理由については、変数を明示的に作成しない言語でそれを行うのは意味がありません。a=2 を実行した場合、それがローカル変数かインスタンス変数かをどのように判断しますか? また、明示的に渡すことは、一般的によりエレガントなデザインです。