Programozás Python
Ez a tartalom része a sorozat:
Stay tuned a közelgő cikkek ebben a sorozatban.
Mi továbbra is tanulmányozza az osztályokat Python. Különleges fenntartott módszernek előtagja - kettős aláhúzás. Segítségükkel megvalósított mechanizmusok, mint például a tervezők szekvencia iterátorokat ingatlan, rések, stb
Ma megnézzük az alábbi témákban.
- Tárgyak az osztályok és speciális módszerek.
- Példányainak osztályok és speciális módszerek.
- Példányainak osztályok szekvenciák.
- Hoz tárgyak alaptípusa.
- Kötött és nem kötött módszerek.
- szuper módszer.
- Statikus módszerek.
- Bejáró.
- Az ingatlan.
- Singleton.
- Slots.
- Funktorhoz.
- Leíró.
- Sequence.
1. Az objektumok az osztályok és speciális módszerek
Az objektum osztály jön létre az osztály definíciója. Objektumosztályok a következő tulajdonságokkal rendelkezik:
__name__ - osztály neve;
__module__ - modul neve;
__dict__ - Szótár class attribútumok, akkor módosíthatja a szótárban közvetlenül;
__bases__ - tuple bázis osztályok sorrendjében előfordulásuk;
__doc__ - string osztály dokumentációt.
2. példányainak osztályok és speciális módszerek
Bíróság (például) az osztály által visszaadott hívás osztály objektum. egy osztály objektum lehet egy példányát (vagy példányok) - egy pár. Példányok a következő tulajdonságokkal rendelkezik:
__dict__ - Szótár class attribútumok, akkor módosíthatja a szótárban közvetlenül;
__class__ - osztály objektum, egy példánya, amely a példány;
__init__ - Designer. Ha a szülő osztály van konstruktora, a származtatott osztály konstruktora kell nevezni;
__del__ - destructor. Ha a szülő osztály van destrukor származtatott osztály destructor kell nevezni;
__cmp__ - szólított fel minden összehasonlítást;
__hash__ - visszaadja a hash érték az objektum, egyenlő a 32-bites szám;
__getattr__ - visszaadja a tulajdonság, amely nem a szokásos módon;
__setattr__ - hozzárendeli az attribútum értékét;
__delattr__ - törli attribútum;
__call__ - által kiváltott hívás példány.
3. példányainak osztályok szekvenciák
Példányainak osztályok lehet használni, hogy szimulálja szekvenciák. Egy ilyen megvalósítás a beépített módszerek:
__len__ - visszaadja a szekvencia hossza;
__getitem__ - fogadó az index vagy a kulcsfontosságú eleme;
__setitem__ - hozzárendelés elemet ami az adott kulcsot vagy indexet;
__delitem__ - eltávolítjuk a elemet ami az adott kulcsot vagy indexet;
__getslice__ - visszaad egy beágyazott szekvenciát;
__setslice__ - helyettesíti a beágyazott szekvenciát;
__delslice__ - eltávolítja a beágyazott szekvenciát;
__contains__ - végrehajtja szereplő.
4. Hoz objektumokat az alaptípus
Osztály tárgyak vezethet egy string vagy numerikus típusú.
__repr__ - hivatalos visszatér a húr az objektumot reprezentálja;
__str__ - visszaadja egy karakterlánc az objektumot reprezentálja;
__oct__. __hex__. __complex__. __int__. __long__. __float__ - Visszaadja egy karakterlánc ábrázolása a megfelelő jelöléssel.
5. kötött és nem kötött módszerek
Vegyünk egy konkrét példát. Van egy alap osztályt Cat, és már nyert az osztályban Barsik:
Egy példányának létrehozása a származtatott osztály:
Első pillantásra - egy furcsa hiba, mert ott éhes attribútumot az alap osztály. Tény, hogy a származtatott osztály konstruktora - túlterhelt, az alap osztály konstruktora nem hívják, és kifejezetten meg kell hívni. Ezt meg lehet tenni két módon. Az első lehetőség elavult:
6. A módszer a szuper
A második lehetőség: a program elején meg kell határozni a metaclass. ami azt jelzi, hogy az osztály végre az úgynevezett új stílus - új stílus. Akkor meg kell hívni egy standard módszerrel szuper bázis tervező:
7. Statikus Módszerek
Statikus módszer - függvény kívül az osztály, és nincs önálló attribútum:
A statikus módszer is definiálható egy osztályon belül - erre a kulcsszóra alkalmazzuk staticmethod. ahol az eljárás lehet okozott mind statikus, mind a példány:
Osztály módszerek meghatározása a kulcsszó classmethod - python automatikusan vezetjük, mint az első paraméter az osztály önmagában (CLS):
8. A bejáró
Iterátorokat jók ahol listák nem alkalmasak annak a ténynek köszönhető, hogy vegye fel a sok memóriát használ, és a bejáró visszaadja az adott értéket. Az osztályban meg kell határozni két szabványos módszerek - __iter__ és a következő. __iter__ módszer visszatér egy objektumot át a következő módszerrel:
Egy bejáró lehet alakítani egy listát:
9. Az ingatlan
Az ingatlan - Class attribútum visszaadott segítségével a szabványos funkció tulajdonság, ami veszi érvek az egyéb funkciók az osztály:
10. Singleton
Ez a minta lehetővé teszi, hogy csak az egyik esetben egy osztály. A módszer __new__:
Slots - tulajdonságok egy listája, a fejlécben megadott az osztály a __slots__. Abban az esetben, hozzárendelni kívánt attribútum használata előtt:
12. A funktor
Funktorhoz - egy osztály, amely __call__ módszer - ebben az esetben a tárgy lehet nevezni függvényében.
Példa. Tegyük fel, hogy van egy személy osztály egy gyűjteménye tárgyak e osztály- emberek, meg kell rendezni ezt a gyűjtemény a családi nevek. Használhatja Sortkey funktorhoz:
13. Handle
Leíró - egy osztály, amely tárolja és ellenőrzi az attribútumok más osztályokba. Általában bármely osztályt, amely megvalósítja az egyik különleges módszerek - __get__. __set__. __delete__. Ez a leíró.
Ebben az esetben az osztály Point saját attribútumokat x, y, bár az okok, mintha azok - sőt, ezek tárolják a leíró ExternalStorage.
14. Sequence
A szekvencia alkalmazásával hajtják végre __getitem__ módszerekkel. __setitem__. Ebben a példában MySequence osztály visszatér az index a szekvencia meghatározatlan hosszúságú, amely a számtani progresszió a formában: 1 3 5 7 Itt lehetetlen alkalmazni a standard módszerek __del__. __len__:
következtetés
Ma megtudtuk, hogy az osztályokat python van egy nagy sor beépített módszereit és attribútumok, amelyek lehetővé teszik a rugalmas használata a modell az objektum-orientált programozás és egyszerűsíti a megoldás a szokásos problémák és algoritmusok. A módszerek lehetnek statikus jellegű, attól függően, hogy az objektum, amely lehetővé teszi a keverést az objektum-orientált és funkcionális felépítése. Hívás alap osztály módszerek saját szemantikája. Mapy szekvencia és végrehajtani alapján iterátorok mentse erőforrások és a memóriát. Az ingatlan egyszerűsítése komplex megvalósítása az osztály attribútumok. Funktorok kezelt objektumok gyűjteménye a felhasználó által megadott típus, mintha ez a hagyományos típusokhoz. -Leírások végre a különböző tárolási logika az osztály attribútumok. A folytatása a ciklus fogunk beszélni dolgozik a fájlrendszer Python eszközöket.
mintakódot ellenőrzik a változata Python 2.6.