コンストラクター内でのself.fieldsの設定方法を変更

旧方式の場合、モジュールグローバルなfieldsを書き換えてしまっているかつ
トリッキーなコードになっていたので、見通しのよいコードに修正。