Mypy error - несовместимые типы при присваивании в наследовании - PullRequest
0 голосов
/ 07 августа 2020

В моем проекте MyPy преследует меня из-за некоторого наследования, и я не могу найти причину, по которой в некоторых случаях он не жалуется на ошибку:

note: In class "Cat":
Incompatible types in assignment (expression has type "Dict[str, Any]", base class "Animal" defined the type as "None")

и не для Собаки, код пример:

class Animal:
  attributes = None

  def __init__(self):
    if attributes is None:
      raise NotImplementedExcepton


class Cat(Animal):
  attributes = {
    'fur': 'black',
    'sound': 'meow',
  }

class Dog(Animal):
  attributes = {
    'fur': 'brown',
    'sound': 'woof',
  }

посоветуйте пожалуйста.

1 Ответ

1 голос
/ 07 августа 2020

attributes может быть None, как показано в Animal, поэтому вы определяете его как Optional. Затем вы также определяете, какой тип attributes может быть.

from typing import Dict, Optional


class Animal:
    attributes: Optional[Dict[str, str]] = None

    def __init__(self):
        if self.attributes is None:
            raise Exception


class Cat(Animal):
    attributes = {
        'fur': 'black',
        'sound': 'meow',
    }

Это не вызовет никаких ошибок mypy.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...