メンバ変数が大量だったり、開発中に頻繁に変わったりすると __init__
で入れ込む処理を書くのが面倒だったりする。
メンバ変数の定義を増やせば勝手に入れ込んでくれるようにしてみる。
注意
- メンバ変数が足りないかどうかの判定はしていない
- クラス変数の有無に依存している為、クラス変数を後から増やしたり減らしたりすると保持できるメンバ変数が変動する
class MyClass:
member_val_1 = None
member_val_2 = None
member_val_3 = None
def __init__(self, mast_val, **params):
"""
初期化処理
"""
# メンバ変数に代入していく
for key, val in params.items():
if hasattr(self, key):
self.__dict__[key] = val
# それ以外の初期化処理
print(mast_val)
if 'other_val' in params.keys():
print(params['other_val'])
my_cls = MyClass('test', member_val_1=123, member_val_2='aaa', other_val='bbb')
サブクラスの場合はこんな感じで書ける。
class SubClass(MyClass):
member_val_4 = None
member_val_5 = None
def __init__(self, **params):
super(SubClass, self).__init__(**params)
# サブクラス用の初期化処理