Az objektum-orientált programozás (OOP) a programozás egy formája, amelynek középpontjában az objektumok állnak: olyan kis egységek, amelyek egyesítik az adatokat és a kódot. A Simula volt az első OOP nyelv, amelyet fizikai modellek szimulálására hoztak létre. Az OOP használatával osztályokat definiálhat, amelyek sablonként működnek bizonyos típusú objektumok számára.
Az OOP alapvető elemei az osztályok, objektumok, metódusok és attribútumok. Az OOP ezeket az elemeket használja az alapvető célok eléréséhez: beágyazás, absztrakció, öröklődés és polimorfizmus.
A Python kiválóan támogatja az objektum-orientált programozást. Ha kíváncsi az OOP-ra vagy annak Pythonban való használatára, olvassa el a részleteket.
Mi az objektum-orientált programozás a Pythonban?
A Python egy általános célú programozási nyelv, amely támogatja az objektumorientált programozást. Központi infrastruktúrája objektum- és osztályépítő alkalmazásokra vagy tervezésre irányul. Az OOP használata tisztábbá és világosabbá teszi a Python kódot. Ezenkívül megkönnyíti a karbantartást és a kód újrafelhasználását.
Íme egy példa, amely megmutatja, miért érdemes az OOP-t használni a Pythonban.
jeans = [30, true, "Denim", 59]
Ebben a példában a farmer egy olyan értéklistát tartalmaz, amely az árat, azt, hogy a cikk akciós-e, az anyagát és a költségét reprezentálja. Ez egy nem OOP megközelítés, és bizonyos problémákat okoz. Például nincs magyarázat arra, hogy a farmer[0] a méretre utal. Ez nagyon nem intuitív az OOP megközelítéshez képest, amely egy elnevezett mezőre utalna : jeans.size .
Ez a példakód nem nagyon használható újra, mivel a viselkedés, amelyre támaszkodik, nem fedezhető fel. Az OOP használatával létrehozhat egy osztályt a probléma elkerülése érdekében.
Kapcsolódó: Objektum-orientált programozás vs. procedurális programozás: miben különböznek egymástól?
Hogyan határozzunk meg egy osztályt a Pythonban
Ha Pythonban szeretne osztályt létrehozni, használja a „class” kulcsszót, majd a választott nevet. Íme egy példa a Myclass nevű osztály meghatározására .
class MyClass: x = 2 p1 = MyClass() print(p1.x)
Határozzuk meg a Pant osztályt, amely különféle nadrágtípusokat képvisel. Ez az osztály tartalmazza a méretet, az értékesítés állapotát, az anyagokat és az árat. Alapértelmezés szerint ezeket az értékeket None értékre inicializálja.
class Pant: # Define the properties and assign None value size = None onsale = None material = None price = None
Kapcsolódó: Abstract Classes in Python: A Beginner's Guide
Hogyan hozzunk létre objektumot Pythonban
Most inicializáljunk egy objektumot a Pant osztályból. Először is meghatározzuk az inicializálási metódust, amelynek az előre meghatározott neve _init_ . Miután meghatározta, a Python automatikusan meghívja ezt a metódust, amikor objektumot hoz létre az adott osztályból.
Másodszor, egy adott saját paraméter lehetővé teszi az inicializálási metódus számára egy új objektum kiválasztását.
Végül az inicializáló meghatározása után létrehozunk egy jeans nevű objektumot az [objectName] = Pant() szintaxis használatával.
class Pant: # Define the initializer method def __init__(self, size, onsale, material, price): self.size = size self.onsale = onsale self.material = material self.price = price # Create an object of the Pant class and set each property to an appropriate value jeans = Pant(11, False, "Denim", 81)
Használjon attribútumokat és módszereket a tulajdonságok és viselkedések meghatározásához
A Python objektumai két különböző attribútumtípust használhatnak: osztályattribútumokat és példányattribútumokat.
Az osztályattribútumok olyan változók vagy metódusok, amelyeket az adott osztály összes objektuma megoszt. Ezzel szemben a példányattribútumok olyan változók, amelyek minden objektumra – egy osztály példányára – egyediek.
Hozzon létre egy példánymódszert az objektumtulajdonságokkal való interakcióhoz.
class Pant: # Define the initializer method def __init__(self, size, onsale, material, price): self.size = size self.onsale = onsale self.material = material self.price = price # Instance method def printinfo (self): return f"This pair of pants is size {self.size}, made of {self.material}, and costs {self.price}" # Instance method def putonsale (self): self.onsale = True jeans = Pant(11, False, "Denim", 81) print(jeans.printinfo()) jeans.putonsale() print(jeans.onsale)
Itt az első módszer, a printinfo() , az onsale kivételével minden tulajdonságot használ . A második metódus, a putonsale() , az onsale ingatlan értékét állítja be . Vegye figyelembe, hogy mindkét példánymódszer használja a self kulcsszót . Ez a metódus meghívásához használt objektumra (vagy példányra) vonatkozik.
A putonsale() meghívásakor ez a metódus a self paramétert használja az adott objektum értékének megváltoztatására. Ha létrehozta volna a Pant egy másik példányát – például leggingseket –, ez a hívás nem érinti. Egy objektum példánytulajdonsága független a többitől.
Az öröklődés használata Pythonban
A fenti példát a Pant osztály egy alkategóriájának hozzáadásával bővítheti . Az objektum-orientált programozásban ezt öröklődésnek nevezik. Az osztály kibontása további tulajdonságokat vagy metódusokat határoz meg, amelyek nem szerepelnek a szülőosztályban.
Határozzuk meg a Leggings-t alosztályként, és örököljük a Panttól .
# Leggings is the child class to parent class Pant class Leggings(Pant): def __init__(self, size, onsale, material, price, elasticity): # Inherit self, size, onsale, material, and price properties Pant.__init__(self, size, onsale, material, price) # Expand leggings to contain extra property, elasticity self.elasticity = elasticity # Override printinfo to reference "pair of leggings" rather than "pants" def printinfo(self): return f"This pair of leggings is size {self.size}, made of {self.material}, and costs {self.price}" leggings = Leggings(11, False, "Leather", 42, True) print(leggings.printinfo())
Az új inicializálási módszer ugyanazokat a tulajdonságokat veszi fel, mint a Pant osztály, és egyedi rugalmassági tulajdonságot ad hozzá. Kibővítheti az osztályt a meglévő funkciók újrafelhasználásához és a kód hosszának csökkentéséhez. Ha a Leggings osztály nem örökölte a Pant osztályt, akkor egy kis változtatás kedvéért reprodukálnia kell a meglévő kódot. Ezeket az előnyöket jobban észre fogja venni, ha nagyobb és bonyolultabb osztályokkal dolgozik.
Ellenőrizze, hogy egy objektum örököl-e az isinstance() osztályból
Az isinstance() függvény ellenőrzi, hogy egy objektum egy adott osztály vagy annak valamelyik ősosztályának példánya-e. Ha az objektum az adott típusú, vagy olyan típusú, amely abból öröklődik, akkor a függvény True-t ad vissza. Ellenkező esetben False értéket ad vissza.
# Dummy base class class Pant: None # Dummy subclass that inherits from Pant class Leggings(Pant): None pants = Pant() leggings = Leggings() print(isinstance(leggings, Pant)) print(isinstance(pants, Leggings))
Vegye figyelembe, hogy a Python a Leggings típusú leggings objektumot a Pant példányának tekinti , a Leggings szülőosztályának. De a nadrágobjektum nem a Leggings osztály példánya.
Kapcsolódó: Hogyan ellenőrizhető, hogy létezik-e fájl Python használatával
A Python a tökéletes bevezetés az OOP-ba
A Python a többi programozási nyelvhez képest egyszerű és könnyen érthető szintaxisa miatt vált népszerűvé. A nyelvet az objektum-orientált programozás köré tervezték, így nagyszerű eszköz a paradigma megtanulásához. A legtöbb nagy technológiai vállalat használja a Python-t technológiai halmazában, és a kilátások jónak tűnnek a Python programozók számára.
Ha a fejlesztési szektorban szeretne karriert csinálni, akkor a Python kiváló kiindulópont. Győződjön meg róla, hogy jól ismeri az alapelveket – az objektum-orientált programozás csak a kezdet!