Аргументом set
должен быть итеративный элемент, элементами которого являются требуемые элементы набора.set( (0,0) )
имеет итеративный аргумент, но его элементами являются 0 и 0, а не кортеж (0,0)
.Вам нужно set([(0,0)])
.То же самое касается deque
;вам нужна итерация , содержащая кортеж ((0, 0), [ (0, 0) ] )
, поэтому
collections.deque([((0, 0), [ (0, 0) ] )])
Что касается ошибки, которую вы видите, function
не имеет __mro__
, потому что она нене нуженЕго базовый класс всегда object
, и вы не можете наследовать от function
, чтобы создать класс, MRO которого должен был бы получить доступ к гипотетическому MRO function
.
Что касается , почему ваш класс данных вызывает эту ошибку, это потому, что декоратор dataclass
должен декорировать класс , а не функцию.
from dataclasses import dataclass
@dataclass
class DequeItems:
current:tuple
path:list
a = DequeItems(
current=(0, 0),
path=[(0, 0)]
)
print(a)