雑記: gin-config で引数のデフォルト値を注入するだけ

参考文献

  1. gin-config/docs at fb517ee61e4a4ce5703f2a156d0edd873c699c0c · google/gin-config · GitHub

以下のようにするとクラスのコンストラクタの引数にデフォルト値を注入できます。

  1. hoge.py で Onigiri クラスを実装します。
  2. config.gin に Onigiri クラスのコンストラクタの引数のデフォルト値をかきます。
  3. hoge.py に戻って、Onigiri クラスの定義の後で config.gin をパースします。これでコンストラクタの引数にデフォルト値が注入されます。無論引数を渡すこともできます。

Onigiri.guzai = 'tuna'

import gin

@gin.configurable
class Onigiri:
    def __init__(self, guzai):
        self.guzai = guzai
    def print_guzai(self):
        print(self.guzai)

gin.parse_config_file('config.gin')

onigiri = Onigiri()
onigiri.print_guzai()

onigiri2 = Onigiri('ume')
onigiri2.print_guzai()

$ python hoge.py
tuna
ume


関数の引数にもデフォルト値を注入できます。

love_onigiri.guzai = 'tuna'

import gin

@gin.configurable
def love_onigiri(guzai):
    return f'I love {guzai} onigiri.'

gin.parse_config_file('config.gin')
s = love_onigiri()
print(s)

$ pipenv run python hoge.py
I love tuna onigiri.