Почему этот код выкидывает ошибку «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)
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
BarCode еще не определен на момент его упоминания в аннотации.
Либо поставь BarCode выше чем Product, либо замени List[BarCode] на List['BarCode'] (опережающая ссылка), либо добавь в начало from __future__ import annotations (делает ссылки опережающими автоматически).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы