Python クラス クラス変数とクラスメソッド
同じクラスで共有する変数をクラス変数と呼ぶ。
class T(object):
words=[]
def add_word(self,word):
self.words.append(word)
このとき、wordsは同クラスで共有される。
![](https://assets.st-note.com/img/1700672205636-HoPvNXtVTr.png)
共有したくないならば、インスタンス変数とする。
class T(object):
word='T'
def __init__(self):
self.words=[]
def add_word(self,word):
self.words.append(word)
![](https://assets.st-note.com/img/1700672435046-XDxVrC5PBM.png)
クラス変数は、オブジェクトとして作成する以前に呼び出せる。
A ,B,CをクラスTのオブジェクトとして作成し、Dをクラスとして作成せずに呼び出す。
![](https://assets.st-note.com/img/1700673090051-M45KKJkX3n.png?width=1200)
クラス変数はDカラでも呼び出せるが、インスタンス変数はDでは呼び出せない。
一方で、オブジェクトとして作成する前にクラス関数にアクセスしたい場合は、関数前に@classmethodをつけ、引数にはselfではなくclsを入れる。
class T(object):
word='T'
def __init__(self):
self.words=[]
def add_word(self,word):
self.words.append(word)
@classmethod
def get_classword(cls):
return cls.word
![](https://assets.st-note.com/img/1700673951551-gZNxLqDDBM.png?width=1200)