I decorated a class using attrs.define
and added all important attributes/fields.
import attrs
@attrs.define
class MyAttrsClass:
important1 = attrs.field(type = int)
important2 = attrs.field(type = str)
[...]
Now I would like to initialize instances of that class from a dict. So what I do is calling the contructor with a dict-unpacking.
test_dict = {'important1': 100, 'important2': 'foo'}
ci = MyAttrsClass(**test_dict)
This works in that simple example case, because I specify the same fields in the dict as well as in the MyAttrsClass
class.
However, in the real scenario the dict is a deserialized response from a web-api (using json.loads
) and it returns many key-value-pairs I'm not interested in, despite the important ones.
Then, I get the following error TypeError: MyAttrsClass.__init__() got an unexpected keyword argument 'XYZ'
.
Is is possible to initialize an instance of MyAttrsClass
, though?
I would like to discard the superfluous elements.
Do I need to manually remove entries from the input dict or is there a better way using attrs.