8

Pythonモジュールのドキュメントでは、属性のクラスを辞書表現に変換する方法があるとattrs 述べています:

例:

>>> @attr.s
... class Coordinates(object):
...     x = attr.ib()
...     y = attr.ib()
...
>>> attr.asdict(Coordinates(x=1, y=2))
{'x': 1, 'y': 2}

どうすれば反対を達成できますか:定型文なしで、モジュールCoordinatesの喜びで、有効な辞書表現からのインスタンスを取得できますか?attrs

4

3 に答える 3

2

JSON にシリアル化/逆シリアル化できるように、Web アプリでこれを行います。

最初に、よりシリアライズしやすいバージョンを返すメソッドをクラスに作成しました。

def asdict(self, serializable=True):
    if serializable:
        as_dict['type'] = self.__class__.__name__
        return as_dict
    else:
        return attr.asdict(self)

次に、これらの辞書の 1 つ (実際には JSON オブジェクト) をクラス インスタンスに戻す必要がある場合:

obj_type = values.pop('type')
if obj_type in obj_list:
    obj = getattr(sys.modules[__name__], obj_type)(**values)
于 2017-10-20T03:40:57.637 に答える