Egyéni formátumkódokkal előállított karakterláncreprezentációk

Objektumok karakterlánc-reprezentációját alapvetően a str() és repr() függvényekkel kaphatjuk meg. Azt, hogy ezek mit adjanak vissza, az egyéni osztályainkban a __str__ és __repr__ metódusok implementálásával határozhatjuk meg. A karakterlánc-reprezentációt a format() beépített függvénnyel is előállíthatjuk, amelynél arra is lehetőség van, hogy különböző formátumokat kapjunk attól függően, hogy második argumentumként milyen formátumkódot adunk meg. Szám- és karakterlánctípusok megjelenési formátumának meghatározására a Python egy szabványos formázási kódrendszert definiál „formátum meghatározó mini-nyelv” (Format Specification Mini-Language) névvel hivatkozva.

Formátum meghatározó kódok nem csak a format() függvényben, hanem a str.format() metódusban, sőt formázott karakterlánc-literál vagy röviden f-string esetén is használhatók.

A format() függvény nem tesz mást, mint az első argumentumként megadott objektumra meghívja a __format__ speciális metódust átadva a formátumkódokat. A __format__ metódust az egyéni osztályunkban felülírhatjuk és a __str__ és __repr__ által visszaadottakon felül, egyéni karakterlánc-reprezentációkat határozhatunk meg az osztálypéldányokra. Erre mutatnak különböző példákat az alábbi osztálydefiníciók, amelyeknél a példányok egyéni formátumkódokkal meghatározott karakterlánc-reprezentációit a fentebb említett három módon (format() függvénnyel, str.format() metódussal és formázott karakterlánc-literállal) állítottuk elő.

A szabványos könyvtárban is találkozhatunk objektumok egyéni formátumkódokkal történő megjelenítési lehetőségével. Ilyen például az ipaddress modulban az ip cím különféle formátumban történő karakterlánc-reprezentációja.

A Python tudásépítés lépésről lépésre című e-könyvben a karakterláncok formázásáról és a standard formátumkódokról részletesen a „Karakterláncok formázása” fejezet „Formázott karakterlánc-literál” alfejezetében olvashatunk. A format() függvénnyel a „Beépített függvények” fejezetben ismerkedhetünk meg. A __format__ metódusról a „Mágikus metódusok egyedi igényre szabott osztályokban” című fejezetben van szó a mostani bejegyzésben szereplőktől eltérő példával bemutatva a használatát. A mezőneves tuple (namedtuple) a „Készétel fogyasztás – a szabványos könyvtár moduljainak használata” fejezet „Speciális konténer típusok” alfejezetében kerül részletes ismertetésre. Az adatosztályokat (dataclass) és a felsorolástípust (Enum) pedig a „Különleges osztálydefiníciók” fejezet tárgyalja szintén részletesen, számos példával segítve a megértésüket.

Érdekel a Python tudásépítés lépésről lépésre az alapoktól az első asztali alkalmazásig című e-könyv.