乃木坂46でクラスのカプセル化を勉強します。
まずソースコードを例示します。
class Nogizaka46:
# コンストラクタ
def __init__(self,name,div="3期生です"):
self.name = name
# アクセス制限を指定
self.__div = div
# getter Div
# メンバーの期別をgetter(getDiv関数)で返す。
@property
def getDiv(self):
return self.__div
# getter name
# メンバーの名前をgetter(getName関数)で返す。
@property
def getName(self):
return self.name
#期別判定のsetter関数(setDiv関数)で設定し、期別で判定する
@getDiv.setter
def setDiv(self,div1):
if div1 >= 3 and div1 < 6:
self.__div = str(div1) + "期生です"
else:
self.__div = "乃木坂46の現役メンバーではありません"
# インスタンスを名前を付けて呼び出し、setterで期を代入し、結果を表示
mem1 = Nogizaka46("梅澤美波")
mem1.setDiv = 3
name1 = mem1.getName
div1= mem1.getDiv
print(f'{name1}は{div1}')
mem2 = Nogizaka46("中西アルノ")
name2 = mem2.getName
mem2.setDiv = 5
div2= mem2.getDiv
print(f'{name2}は{div2}')
mem3 = Nogizaka46("桜井玲香")
name3 = mem3.getName
mem3.setDiv = 1
div3= mem3.getDiv
print(f'{name3}は{div3}')
mem4 = Nogizaka46("岩本蓮加")
name4 = mem4.getName
div4= mem4.getDiv
print(f'{name4}は{div4}')
実行した結果は下記の通りです。