日々精進

新しく学んだことを書き留めていきます

初期化時に何か処理を追加したい場合は__post_init__が便利

@dataclass
class MyClass:
  _myvar

のように@dataclassを使っていると、initを自動生成してくれて便利だが初期化時に何か処理を追加したい場合に困る。

以下のようにpost_initメソッドを実装するとinitを実行した後で実行してくれるので便利。これでdef initを自分で実装し、_myvarへの代入処理を書かなくて済む。。

@dataclass
class MyClass:
  _myvar
  def __post_init__(self):
    ...

参考:

stackoverflow.com