Com classes normais você tem **kwargs
argumentos __init__
de palavras-chave não correspondentes que podem ser ignorados:
class MyClass:
def __init__(self, a, **kwargs):
self.a=a
my_class = MyClass(20, **{"kwarg1" : 1})
Existe um equivalente @dataclass
que pode ignorar facilmente argumentos de palavras-chave não correspondentes sem precisar incluir um __init__
?
from dataclasses import dataclass
@dataclass
class MyClass:
a: int
my_class = MyClass(20, **{"kwarg1" : 1}) # TypeError: MyClass.__init__() got an unexpected keyword argument 'kwarg1'