Mágikus módszerek különleges módszerek, hogy megadhatjuk, hogy adjunk ‘mágikus’ az osztályba. Mindig kettős aláhúzás veszi körül őket, például a __init__ és __str__ mágikus módszerek. A mágikus módszerek gazdagíthatják osztálytervünket azáltal, hogy hozzáférést biztosítanak a Python beépített szintaxis funkcióihoz.
a Python lehetővé teszi, hogy osztályaink a beépített osztályoktól örököljenek. A beépített öröklődő gyermekosztály ugyanazokat az attribútumokat osztja meg, beleértve a beépített módszereket is. Kihasználhatjuk az alapvető beépített funkciókat, de testreszabhatjuk a kiválasztott műveleteket mágikus módszerek használatával.
ebben az oktatóanyagban összekapcsolom ezt a két ötletet, hogy bemutassam, hogyan örökölhetünk a beépített list osztályból, és használhatunk mágikus módszereket az osztálytervünkben. Módosítom a három mágikus módszert, amelyek szabályozzák a lista indexelését. Mindkét tulajdonság kombinálásával egy nagyon egyszerűen használható Osztály felépíthető, és viselkedést adhatunk hozzá a kívánt módszerekhez. A beépített viselkedés minden Python-fejlesztő számára ismerős; ez viszont könnyen megtanulható örökölt osztályunkat használja.
végül két további tágabb példát mutatunk be, amelyek bemutatják, hogyan lehet mágikus módszereket használni a sugárzási műveletekben és megváltoztatni egy példány állapotát. Minden kísérő kód elérhető a GitHub – on keresztül.
1. példa: Lista indexelés
a mágikus módszerek manipulálhatók a lista indexelésének módosításához. Az osztály MyCustomList, örökli a beépített lista típusát. Ez azt jelenti, hogy a MyCustomList osztályon keresztül létrehozott bármely objektum listaként fog viselkedni, kivéve azokat a helyeket, ahol a módszerek szelektív testreszabását választjuk.
a getitem, a setitem és a delitem mágikus módszerek, amelyeket a lista indexének elérésekor hívunk meg. Ezeknek a mágikus módszereknek a viselkedése módosítható.
az alábbi példában elvetjük a nulladik indextől kezdődő listaindexelés gondolatát. Ha a felhasználó a nulladik index segítségével próbál hozzáférni egy elemhez a listánkból, akkor egy ValueError kivétel jelenik meg, és a program megszűnik. Ha a felhasználó egynél nagyobb listaindexet ad meg, a módszerek eggyel csökkentik az indexet, majd az Indexszel felhívják a szülőosztály-listát.
a MyCustomList osztályban meghatározott módszerek használatának bemutatásához lásd alább a Python interaktív promptban.