227. Cpu bus ppu default factory
Добавление PPU по умолчанию в CpuBus.
Урок 227 из 356 · tests/chapter_03_ppu_memory_and_graphics_data/test_227_cpu_bus_ppu_default_factory.py
Файл для обновления
emulator/bus/cpu_bus.pyЧто добавить
CpuBus should own a PPU instance.Почему этот шаг нужен
CPU NES взаимодействует с PPU через регистры с отображением в память. Прежде чем CpuBus сможет маршрутизировать чтения/записи в диапазоне $2000-$3FFF, шине нужен объект PPU, которому она будет передавать эти обращения.
Важное архитектурное решение
Используйте default_factory вместо прямого PPU() в поле dataclass.
Почему
Каждый CpuBus должен получать собственный экземпляр PPU. Совместное использование одного изменяемого объекта PPU между экземплярами шины создало бы скрытую связанность между тестами и экземплярами эмулятора.
Предлагаемый псевдокод реализации
from dataclasses import dataclass, field
from emulator.ppu.ppu import PPU
@dataclass
class CpuBus:
...
ppu: PPU = field(default_factory=PPU)Запустить этот урок
uv run pytest tests/chapter_03_ppu_memory_and_graphics_data/test_227_cpu_bus_ppu_default_factory.py -v