/
telnov.ob
/
patterns
Обзор
Документация
Войти
/
telnov.ob
/
patterns
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Visitor/python/Visitor.py
58 строк
1 KB
georgedem
new README and Visitor
12 авг 2022, 17:54
12 авг 2022, 17:54
4658eda
Код
Авторство
О чём код?
import abc from typing import List class IVisitor(metaclass=abc.ABCMeta): @abc.abstractmethod def visit(self, place: 'IPlace'): pass class IPlace(metaclass=abc.ABCMeta): @abc.abstractmethod def accept(self, visitor: IVisitor): pass class Zoo(IPlace): def accept(self, visitor: IVisitor): visitor.visit(self) class Cinema(IPlace): def accept(self, visitor: IVisitor): visitor.visit(self) class Circus(IPlace): def accept(self, visitor: IVisitor): visitor.visit(self) class HolidayMaker(IVisitor): def __init__(self): self.value = '' def visit(self, place: 'IPlace'): if isinstance(place, Zoo): self.value = 'zoo' elif isinstance(place, Cinema): self.value = 'cinema' elif isinstance(place, Circus): self.value = 'circus' if __name__ == '__main__': places : List[IPlace] = [Zoo(), Cinema(), Circus()] for places in places: visitor = HolidayMaker() places.accept(visitor) print(visitor.value)