Mypy выдает «Несовместимое значение по умолчанию для аргумента», когда значение параметра Dict по умолчанию «Нет» ⇐ Python

Программы на Python
Anonymous
Mypy выдает «Несовместимое значение по умолчанию для аргумента», когда значение параметра Dict по умолчанию «Нет»

Сообщение Anonymous »

Я понимаю, что для параметра Dict в функции Python лучше всего установить значение по умолчанию None. Однако mypy, похоже, с этим не согласен:

Код: Выделить всё

    def example(self, mydict: Dict[int, str] = None):
return mydict.get(1)
Это приводит к ошибке mypy:

Код: Выделить всё

error: Incompatible default for argument "synonyms" (default has type "None", argument has type "Dict[Any, Any]")  [assignment]
mypy, с другой стороны, с этим справляется:

Код: Выделить всё

   def example(self, myDict: Dict[int, str] = {}):
Но пилинт жалуется:

Код: Выделить всё

W0102: Dangerous default value {} as argument (dangerous-default-value)
Согласно этому вопросу SO (https://stackoverflow.com/a/26320917), значением по умолчанию должно быть None, но это не будет работать с mypy. Какой вариант удовлетворит как pylint, так и mypy? Спасибо.
РЕШЕНИЕ (на основе комментариев):

Код: Выделить всё

class Example:
"""Example"""
def __init__(self):
self.d: Optional[Dict[int, str]] = None

def example(self, mydict: Optional[Dict[int, str]] = None):
"""example"""
self.d = mydict
Часть проблемы (изначально не упомянутой), с которой я столкнулся, заключалась в обратном присвоении ранее инициализированной переменной, это работает.

Подробнее здесь: https://stackoverflow.com/questions/721 ... aults-none

Вернуться в «Python»