Почему этот код выкидывает ошибку «NameError: name 'BarCode' is not defined»?

from dataclasses import dataclass, field
from typing import List

@dataclass()
class Product():
    plu: int
    name: str = ''
    bar_codes: List[BarCode] = field(default_factory=list)


@dataclass()
class BarCode():
    product_id: int
    bar_code: str

if __name__ == "__main__":
    barcodes = [BarCode(1,'111'), BarCode(1, '222')]
    prod = Product(1,"Молоко", barcodes)
    print(prod.bar_codes)
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
BarCode еще не определен на момент его упоминания в аннотации.
Либо поставь BarCode выше чем Product, либо замени List[BarCode] на List['BarCode'] (опережающая ссылка), либо добавь в начало from __future__ import annotations (делает ссылки опережающими автоматически).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
Greenway Global Новосибирск
от 150 000 ₽