Подробное объяснение
1️⃣ case Animal() проверяет isinstance(d, Animal).
2️⃣ Dog — подкласс Animal, поэтому проверка возвращает True.
3️⃣ Выполняется print("A"), блок case Dog() пропускается.
4️⃣ Match не падает сквозь — только первый подходящий case.
5️⃣ print("done") выполняется в любом случае.
Почему это важно
Более общий паттерн сверху перехватывает частные. Чтобы Dog сработал — поменяйте порядок: Dog выше Animal.
Post #4745
693
- ✍ 4