Pythonで使われるクラス変数とインスタンス変数の違いがよくわかってなかったので勉強しました。
公式ドキュメントで説明されているリンクは以下になります。
公式ドキュメントでは以下の説明がありました。
Generally speaking, instance variables are for data unique to each instance and class variables are for attributes and methods shared by all instances of the class:
一般的にインスタンス変数は各インスタンスで一意になるデータでクラス変数は全てのインスタンスで共有される属性やメソッドとのこと。
サンプルのコードで以下が記載されていました。
class Dog: kind = 'canine' # class variable shared by all instances def __init__(self, name): self.name = name # instance variable unique to each instance >>> d = Dog('Fido') >>> e = Dog('Buddy') >>> d.kind # shared by all dogs 'canine' >>> e.kind # shared by all dogs 'canine' >>> d.name # unique to d 'Fido' >>> e.name # unique to e 'Buddy'
Dogクラスのkindはクラス変数として定義されていて、各インスタンスで共有される。
init内のnameはインスタンス変数で各インスタンス毎に一意の値になる。
だからクラス変数は静的にリテラルが代入されていて、インスタンス変数は動的に受け取れるようになっているみたいです。
引き続きPython勉強していきます。