/
GlebBavykin
/
python_sketches
Обзор
Документация
Войти
/
GlebBavykin
/
python_sketches
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
design_patterns/structural/composite.py
43 строки
961 B
Gleb Bavykin
add mypy to uv
07 июл 2026, 21:33
07 июл 2026, 21:33
91c60eb
Код
Авторство
О чём код?
from collections.abc import Callable from typing import Protocol, runtime_checkable @runtime_checkable class Evaluatable(Protocol): """ Common interface for numbers and expressions """ def eval(self) -> float: ... class Number: """ Leaf of expression class """ def __init__(self, value: float): self._value = value def eval(self) -> float: return self._value def __str__(self) -> str: return f"Number: {self.eval()}" class Expression: """ Container of numbers and operation """ def __init__(self, operand_a: Number | Expression, operation: Callable, operand_b: Number | Expression): self._operand_a = operand_a self._operation = operation self._operand_b = operand_b def eval(self) -> float: return self._operation(self._operand_a.eval(), self._operand_b.eval()) def __str__(self) -> str: return f"Value: {self.eval()}"