Конфигурация через dataclass
Python
Senior
Яндекс
01.01.2025
Реализуйте dataclass `AppConfig`, который:
1. Имеет поля `host: str = "localhost"`, `port: int = 8000`, `debug: bool = False`.
2. Имеет метод `from_env()`, который создаёт инстанс, читая переменные окружения `APP_HOST`, `APP_PORT`, `APP_DEBUG`.
3. Корректно конвертирует типы (port → int, debug → bool: `"1"/"true"` → True, иначе False).
Ответы
Решение 1
```python
import os
from dataclasses import dataclass
@dataclass
class AppConfig:
host: str = "localhost"
port: int = 8000
debug: bool = False
@classmethod
def from_env(cls) -> "AppConfig":
host = os.getenv("APP_HOST", cls.host)
port_str = os.getenv("APP_PORT")
debug_str = os.getenv("APP_DEBUG")
port = int(port_str) if port_str is not None else cls.port
if debug_str is None:
debug = cls.debug
else:
debug = debug_str.lower() in {"1", "true", "yes", "on"}
return cls(host=host, port=port, debug=debug)
```