mapping.get()
「デフォルト」引数をサポートします。
os.environ.get("CDO_TBLPATH", '')
デフォルトでは が返されますがNone
、空の文字列を指定すると、 がCDO_TBLPATH
定義されていなくても連結が機能します。
None を返すNone
場合、連結を魔法のように返すことはできません。メソッドで返される.get()
カスタム クラスを使用できますが、それが非常に読みやすいかどうかはわかりません。None
__add__
環境変数が定義されていない場合にオプションのいずれかをスキップする (連結しない) 必要がある場合は、テストを分割することをお勧めします。
table_options = (
(lambda: iTBLFilePath, lambda: iTBLFilePath)
(lambda: os.environ.get("CDO_TBLPATH") and os.environ.get("CDO_INSTANCE_TYPE"),
lambda: os.environ["CDO_TBLPATH"] + os.environ["CDO_INSTANCE_TYPE"] + '.tbl'),
(lambda: os.environ.get("CDO_ROOT") and os.environ.get("CDO_INSTANCE_TYPE"),
lambda: os.environ["CDO_ROOT"] + "/cdo/tbl/" + os.environ["CDO_INSTANCE_TYPE"] + ".tbl"),
(lambda: True, lambda: None),
)
self. _TBLFilePath = next(opt() for tst, opt in table_options if tst())
これは一連のテストを定義し、成功した最初のテストに関連付けられた値が使用されます。