LoginSignup
1
4

More than 5 years have passed since last update.

Pythonでメンバ変数(フィールド)に入れる手間を省く

Last updated at Posted at 2018-03-06

メンバ変数が大量だったり、開発中に頻繁に変わったりすると __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)
        # サブクラス用の初期化処理
1
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4