self.user = kwargs['user'].pop()
self.event_type = kwargs['event_type'].pop()
Вы пытаетесь извлечь запись из словаря, а затем вызываете его метод pop. Если вы хотите удалить и вернуть объект из словаря, позвоните dict.pop()
:
self.user = kwargs.pop('user')
Конечно, это не удастся с KeyError
, когда "user"
отсутствует в kwargs
. Вы хотите указать значение по умолчанию для pop:
self.user = kwargs.pop('user', None)
Это означает, что «если "user"
есть в словаре, удалите и верните его. В противном случае верните None
».
Относительно двух других строк:
self.link = self._generate_link()
super(Link,self).__init__(*args,**kwargs)
super().__init__()
будет устанавливать link
на что-то, вероятно, None
. Я бы поменял строки, примерно так:
super(Link,self).__init__(*args,**kwargs)
self.link = self._generate_link()
Возможно, вы захотите добавить тест перед установкой ссылки, чтобы проверить, существует ли она уже (if self.link is not None: ...
). Таким образом, ссылки, которые вы передаете в конструктор, не будут перезаписаны.