Metaprogramovanie - koronaprednáška 5
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Prednáška sa venuje metatriedam v Pythone, teda práci s triedami ako s objektmi. Trieda vzniká ako inštancia metatriedy type, ktorej sa odovzdá názov, zoznam predkov a slovník atribútov, čo je ekvivalentné zápisu cez kľúčové slovo class. Samotná trieda type je inštanciou seba samej, čím sa reťazenie metatried ukončuje. Vlastnú metatriedu možno vytvoriť ako potomka type s konštruktorom o troch parametroch a jej metódy sa stanú metódami triedy, nie inštancie. Metatriedu sa zadáva parametrom metaclass, pričom Python nekontroluje jeho typ, takže môže ísť aj o funkciu vracajúcu ľubovoľný objekt. Ako praktický príklad slúži metatrieda, ktorá obaľuje metódy a ladiacim výpisom zobrazuje ich parametre.
- - Trieda je inštancia metatriedy type: type(názov, predkovia, slovník atribútov) je ekvivalent zápisu class.
- - Trieda type je inštanciou samej seba (type is type), preto sa reťazec metatried nekončí nekonečne.
- - Vlastná metatrieda je potomok type a jej konštruktor musí prijímať názov, predkov a slovník atribútov a volať super().__init__.
- - Metódy definované v metatriede sú metódami triedy, cez inštanciu triedy nie sú dostupné, lebo vyhľadávanie sa z inštancie do metatriedy nedostane.
- - Metatrieda sa pri definícii triedy uvádza parametrom metaclass=...
- - Hodnotou metaclass môže byť ľubovoľný objekt alebo funkcia o troch parametroch, Python jej typ nekontroluje, a výsledok nemusí byť trieda.
- - Praktické využitie: metatrieda obaľujúca všetky metódy triedy na ladiaci výpis parametrov pri každom volaní.
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky