Python の クラスでの 変数などの説明
クラスは、インスタンス変数 と クラス変数 を持つことができます。
インスタンス変数
インスタンス変数は「インスタンス名.変数名」で利用し、インスタンス毎に独立の変数です。
class myClass:
def __init__(self):
self.name = "" # インスタンス変数
m1 = myClass()
m1.name = "TARO"
m2 = myClass()
m2.name = "JIRO"
print(m1.name)
print(m2.name)
TARO
JIRO
クラス変数(static変数)
クラス変数は「クラス名.変数名」で利用し、すべてのインスタンスで共通の変数です。クラス変数はインスタンスを生成しなくても利用できます。
class myClass:
team_namae = "" # クラス変数
def __init__(self):
self.name = ""
myClass.team_namae = "JAPAN" # インスタンスは無い
m1 = myClass()
m1.name = "TARO"
m2 = myClass()
m2.name = "JIRO"
print(m1.name)
print(m2.name)
print(myClass.team_namae)
TARO
JIRO
JAPAN
アクセス制限
private や protected などのアクセス修飾子はありません。
アンダーバー(_)で始まる変数や関数は外から参照しないという慣習的ルールがあります。アンダーバー2個(__)で始まる変数や関数は参照方法が違います。
class myClass:
def __init__(self):
self.name = "TARO"
self._name = "JIRO"
self.__name = "SABU" #
m = myClass()
print(m.name)
print(m._name) # 参照できるが慣習的に参照しない
print(m._myClass__name) # __name では参照できない。
TARO
JIRO
SABU
メソッド(関数)も同様
class myClass:
def __init__(self):
self.__name = "TARO"
def getName(self):
return self.__name
def _getName(self):
return self.__name
def getName(self):
return self.__name
m = myClass()
print(m.getName())
print(m._getName())
TARO
TARO
コード入力中の IDEで補完はこんな感じ
コメント