Pythonのプロパティを使う方法
Pythonでは、クラスのカプセル化を実現する際は、プロパティを用いるほうがいいと思います。
getter, setterを作ったとしても、使用者側がそれを使ってくれる保証がありません。(´;ω;`)
あまり良くない書き方 その3 getter/setter - Python学習講座
コード
class Car(object): def __init__(self, model=None): self.model = model def run(self): print('run') class ToyotaCar(Car): def run(self): print('fast') class TeslaCar(Car): def __init__(self, model="Model S", enable_run=False): # 親のinit関数を呼び出す super().__init__(model) # プライベートメンバ変数 self.__enable_auto_run = enable_run @property def enable_auto_run(self): return self.__enable_auto_run @enable_auto_run.setter def enable_auto_run(self, is_enable): self.__enable_auto_run = is_enable def run(self): print('super fast') def auto_run(self): print('auto_run') car = Car() car.run() print('########') toyota_car = ToyotaCar('Lexus') print(toyota_car.model) toyota_car.run() print('########') # コンストラクタで、プライベートメンバ変数(__enable_auto_run)に対して、Falseの値をセットする tesula_car = TeslaCar('Model_S', False) print(tesula_car.enable_auto_run) # Setterを通して、プライベートメンバ変数(__enable_auto_run)に対して、Trueの値をセットする tesula_car.enable_auto_run = True print(tesula_car.enable_auto_run)
出力イメージ
run ######## Lexus fast ######## False True