Класс данных Python3 с **kwargs (звездочкой) ⇐ Python
-
Anonymous
Класс данных Python3 с **kwargs (звездочкой)
В настоящее время я использую DTO (объект передачи данных) вот так.
класс Test1: def __init__(self, user_id: int = Нет, тело: str = Нет): self.user_id = user_id self.body = тело Пример кода очень мал, но когда масштаб объекта увеличивается, мне приходится определять каждую переменную.
Покопавшись, обнаружил, что Python 3.7 поддерживает dataclass
Ниже приведен код класса данных, используемый DTO.
из классов данных импортировать класс данных @dataclass класс Тест2: user_id: интервал тело: ул. В этом случае, как я могу разрешить передачу большего количества аргументов, которые не определены в классе Test2?
Если бы я использовал Test1, это было бы легко. Просто добавьте **kwargs(asterisk) в __init__
класс Test1: def __init__(self, user_id: int = Нет, тело: ул = Нет, **кварг): self.user_id = user_id self.body = тело Но, используя класс данных, не удалось найти способ его реализовать.
Есть ли здесь какое-нибудь решение?
Спасибо.
ИЗМЕНИТЬ
класс Test1: def __init__(self, user_id: str = Нет, тело: str = Нет): self.user_id = user_id self.body = тело если __name__ == '__main__': temp = {'user_id': 'скрыть', 'body': 'тест тела'} t1 = Тест1(**температура) печать(t1.__dict__) Результат: {'user_id': 'hide', 'body': 'body test'
Как вы знаете, я хочу вставить данные со словарным типом -> **temp
Причина использования звездочки в классе данных та же.
Мне нужно передать словарный тип в класс init.
Есть идеи?
В настоящее время я использую DTO (объект передачи данных) вот так.
класс Test1: def __init__(self, user_id: int = Нет, тело: str = Нет): self.user_id = user_id self.body = тело Пример кода очень мал, но когда масштаб объекта увеличивается, мне приходится определять каждую переменную.
Покопавшись, обнаружил, что Python 3.7 поддерживает dataclass
Ниже приведен код класса данных, используемый DTO.
из классов данных импортировать класс данных @dataclass класс Тест2: user_id: интервал тело: ул. В этом случае, как я могу разрешить передачу большего количества аргументов, которые не определены в классе Test2?
Если бы я использовал Test1, это было бы легко. Просто добавьте **kwargs(asterisk) в __init__
класс Test1: def __init__(self, user_id: int = Нет, тело: ул = Нет, **кварг): self.user_id = user_id self.body = тело Но, используя класс данных, не удалось найти способ его реализовать.
Есть ли здесь какое-нибудь решение?
Спасибо.
ИЗМЕНИТЬ
класс Test1: def __init__(self, user_id: str = Нет, тело: str = Нет): self.user_id = user_id self.body = тело если __name__ == '__main__': temp = {'user_id': 'скрыть', 'body': 'тест тела'} t1 = Тест1(**температура) печать(t1.__dict__) Результат: {'user_id': 'hide', 'body': 'body test'
Как вы знаете, я хочу вставить данные со словарным типом -> **temp
Причина использования звездочки в классе данных та же.
Мне нужно передать словарный тип в класс init.
Есть идеи?