Как создать класс из словаря - PullRequest
0 голосов
/ 25 февраля 2020

Для данного класса, как создать его экземпляр из словаря полей? Вот пример, иллюстрирующий мой вопрос:

from typing import Tuple, Mapping, Any


def new_instance(of: type, with_fields: Mapping[str, Any]):
    """How to implement this?"""
    return ...


class A:
    """Example class"""

    def __init__(self, pair: Tuple[int, int]):
        self.first = pair[0]
        self.second = pair[1]

    def sum(self):
        return self.first + self.second


# Example use of new_instance
a_instance = new_instance(
    of=A,
    with_fields={'first': 1, 'second': 2}
)

1 Ответ

1 голос
/ 25 февраля 2020

См. Как создать экземпляр класса без вызова инициализатора? , чтобы обойти инициализатор. Затем установите атрибуты из словаря.

def new_instance(of: type, with_fields: Mapping[str, Any]):
    obj = of.__new__(of)
    for attr, value in with_fields.items():
        setattr(obj, attr, value)
    return obj
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...