Інтроспекція (Introspection)
Інтроспекція — це здатність програми досліджувати власний тип, структуру та властивості під час виконання.
Uses: 1. Runtime Type Checking. 2. Serialization (JSON/XML). 3. Unit Testing (finding test methods). 4. Dependency Injection.
graph LR
Center["Інтроспекція (Introspection)"]:::main
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 Простими словами
Це якби твій конструктор Lego сам знав, які деталі у нього є в коробці, і міг сказати тобі: 'У мене є два синіх кубика і одне колесо, ми можемо зібрати причіп!'. Це допомагає програмам бути розумнішими і підлаштовуватися під ситуацію.
🤓 Expert Deep Dive
На технічному рівні інтроспекція базується на збереженні 'Метаданих' (Metadata) у пам'яті під час виконання програми. У таких мовах, як Python, майже все є об'єктом, і кожному об'єкту відповідає словник властивостей. Використання функцій типу isinstance() або hasattr() дозволяє реалізувати патерн 'Качина типізація' (Duck Typing): якщо об'єкт поводиться як качка (має метод quack), нам не важливо, якого він насправді класу. Хоча це робить код простішим, надмірне використання інтроспекції уповільнює програму, оскільки комп'ютер витрачає ресурси на постійні перевірки замість самої роботи.