Metaprogramovanie - koronaprednáška 5

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

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.

Otvoriť AI: ChatGPT · Claude · Gemini

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.