霧縛りの職工

大したことないことを大したことないように書きたい

Python の関数定義についての備忘録

Python を扱い始めて割と誰もが一度は疑問に思うであろう関数定義について学んだので書き留める。

学習にあたって以下のサイトを参照させて頂いた。 記事内での技術的な理解の誤りについてはもちろん私に文責がある点はご注意を。

python.ms

  • TL;DR
  • Python の関数定義
  • メソッドと関数定義
  • 第一引数に self を与える意義
  • PythonRuby の比較について
  • おわりに

TL;DR

Python の関数定義における self について調べた
クラス定義内でも Python は関数定義の記法でメソッドを記述する
クラス定義内で記述した関数定義から メソッドオブジェクト が生成される

Python の関数定義

例によって? Python を書き始めて「何でメソッドの第一引数に self を書くんだろう」と疑問に思って調べ物。

class Dog:
    # class variable shared by all instances
    kind = 'canine'

    def __init__(self, name):
        # instance variable unique to each instance
        self.name = name    

docs.python.org

もちろんオブジェクトの自己参照を定義している言語は珍しくないし、それに self という語句を割り当てている言語もある。 焦点はあくまでも、なぜメソッドを宣言するときに 第一引数 として記述が必要なのか。

結論としては、Python はクラスメソッドを記述する時に関数定義を記述する、というより メソッドを定義する特別な記法は持たない 言語だからという事らしい。

続きを読む