Проблема с отчетами MyPy: тип NamedTuple в качестве атрибута не поддерживается ⇐ Python

Программы на Python
Anonymous
Проблема с отчетами MyPy: тип NamedTuple в качестве атрибута не поддерживается

Сообщение Anonymous »

У меня есть следующий класс, и MyPy сообщает о проблеме. Тип NamedTuple, поскольку атрибут не поддерживается для атрибута self.Data.

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

from collections import namedtuple
from collections.abc import MutableSequence

class Record(MutableSequence):
def __init__(self, recordname: str, fields: list, records=None):
if records is None:
records = []
self.fields = fields
defaults = [""] * len(fields)
self.Data = namedtuple(recordname, self.fields, defaults=defaults)
self._records = [self.Data(**record) for record in records]
self.valid_fieldnames = set(self.fields)

self.lookup_tables: dict = {}

def __getitem__(self, idx):
return self._records[idx]

def __setitem__(self, idx, val):
self._records[idx] = self.Data(**val)

def __delitem__(self, idx):
del self._records[idx]

def __len__(self):
return len(self._records)

def insert(self, idx, val):
a = self._records[:idx]
b = self._records[idx:]
if isinstance(val, self.Data):
self._records = a + [val] + b
else:
self._records = a + [self.Data(**val)] + b
Я не понимаю, в чем проблема, о которой сообщает MyPy, и мне не удалось найти ее в Интернете. Код фактически работает так, как ожидалось, без каких-либо ошибок; только MyPy сообщает о проблеме, и мне просто интересно понять, в чем она заключается.
Некоторая дополнительная информация: я использую Python-3.12 в VS Code с официальным расширением MyPy Type Checker. , что и сообщает о проблеме.
Я попробовал несколько способов, чтобы проверить, исчезнет ли ошибка, но ни один из них не помог. Например, я удалил MutableSequence в качестве родительского класса, удалил значения по умолчанию из конструктора Nametuple и удалил все методы dunder, но ошибка не исчезла.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -supported

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