Objektumorientált nyelvben az osztály egy kibontható kódrészlet, amely sablont képvisel az adott osztály objektumainak létrehozásához és használatához. Egy osztály objektuma egyszerűen a megadott osztály példányára utal.
Python osztály alapjai
A Python programozási nyelvben minden adat egy osztály példányaként jelenik meg. Ha még nem ismeri a nyelvet, olvassa el a mi oldalunkat kezdő útmutató a Pythonhoz mielőtt továbblépne.
Az osztály egy viselkedéskészletet biztosít tagfüggvények formájában (más néven módszerek), amelyek megvalósításai közösek a az osztály összes példánya, és ez határozza meg azt is, hogy a példányának állapotinformációja miként jelenik meg attribútumok.
Olvass tovább: Osztályos módszerek a Pythonban: A fontos különbségek
Az alábbi kód egy meghatározott osztályt mutat be a Pythonban. A kódban definiált osztály biztosítja a RaceCar osztály megvalósítását.
Az osztály minden példánya egyszerű modellt biztosít a különböző márkájú autók számára, és a következő állapotot tartalmazza - információ: az autó neve, a sofőr neve, az autó rendszáma, az aktuális sebesség, a gyorshajtás díja és szín.
Ez az autóosztály minden autóhoz külön érzékelőt modellez, amely 50 dolláros bírságot von maga után az autó vezetőjével szemben, ha túllépi a törvényes 140 mérföld / órás sebességhatárt.
Példa osztályra (autóosztály)
osztályú autó:
#Konstruktőr
# Az init módszer felelős az osztály # változóinak értékeinek inicializálásáért.
def __init __ (saját, autó_név, illesztőprogram_neve, jogosítvány_szám,
jelenlegi_sebesség, sebességtúllépés, szín):
self.car_name = car_name
self._driver_name = illesztőprogram_neve
self._license_plate_number = licenc_plate_number
self._current_speed = aktuális_sebesség
self._speeding_charge = sebességtúllépés
ön._szín = szín
#Accessor módszerek
# A get_car_name metódus visszaadja az autó nevét
def get_car_name (self):
adja vissza self._car_name
# A get_driver_name metódus visszaadja az illesztőprogram nevét
def get_driver_name (saját):
adja vissza self._driver_name
# A get_license_plate metódus visszaadja az autó rendszámát
def get_license_plate (self):
return self._license_plate
# A get_current_speed metódus visszaadja az autó aktuális sebességét # mozog
def get_current_speed (self):
return self._current_speed
#A get_speeding_charge módszer a teljes pénzösszeget adja vissza
A #driver-nek fizetnie kell a túlhajtásért
def get_speeding_charge (self):
return self._speeding_charge
# A get_colour metódus visszaadja édes menetünk színét!
def get_colour (self):
visszatér self._colour
#Mutátor módszerek
# A set_driver érték megváltoztatja autónk vezetőjét.
def set_driver (self, new_driver):
self._driver_name = new_driver
# A gyorshajtási módszer biztosítja, hogy a sofőr 50 dollárt számoljon fel, amikor # 140 mérföld / órás sebességet meghaladó sebességet fogott el :(
def speeding_ticket (self, current_speed):
ha a jelenlegi_sebesség <= 140:
return False
más:
ön._sebesség_töltés + = 50
return True
# A make_payment módszer biztosítja, hogy a sofőr képes legyen megfizetni az összes # összeget, amellyel tartozik a gyorshajtási jegydíjakért.
def make_payment (saját, összeg_fizetett):
self._speeding_charge - = összeg_fizetett
A Python osztály példájának magyarázata
Az "én" paraméter
Először is vegye figyelembe, hogy különbség van az osztályban deklarált metódus aláírás és a metódus aláírás között, amelyet a programozó használ a függvény meghívására. Például a get_colour osztályban meghatározott módszer egy paramétert vesz fel, amely az „én” paraméter.
Amikor azonban a programozó ezt a módszert meghívja az osztály egyik példányára, nem ad meg paramétereket. Ugyanez a jelenség figyelhető meg a speeding_ticket módszerben is, amely az osztály két paraméterének felvételére van definiálva (azaz saját és current_speed), de a programozó képes végrehajtani ezt a módszert úgy, hogy csak a 'current_speed' értékét adja meg paraméter.
Ennek az az oka, hogy a megadott „én” paraméter célja, hogy a metódust az objektumpéldányhoz kösse, amelyre meghívták, és ez nem a programozó által megadandó érték.
A kivitelező
Az osztály konstruktora az osztály azon módszerére utal, amelyet a felhasználó meghívhat az osztály objektum példányának létrehozására. A Car osztályban a felhasználó létrehozhat egy objektumpéldányt a következő szintaxis használatával:
# saját Bugattink létrehozása :)
Autó („Bugatti”, „David Sasu”, 90828, 0, 0, „Cherry Red”)
Ennek a kódnak a végrehajtása a __init__ metódus meghívását eredményezi az Autó osztályban. Ennek a módszernek a feladata egy újonnan létrehozott hitelkocsi objektum létrehozása a megadott példányértékekkel. A Car osztály minden objektuma hat példányváltozóból áll, amelyek:
- _ autó_név
- _vezető_neve
- _rendszámtábla
- _pillanatnyi sebesség
- _sebesség_ töltés
- _szín
Hozzáférési módszerek
Ezek olyan módszerek, amelyeket egy objektumpéldány állapotinformációinak elérésére írnak. A Car osztályban a következő módszereket írták:
- get_car_name
- get_driver_name
- get_license_plate
- get_current_speed
- get_speeding_charge
- get_colour
Mutációs módszerek:
Ezek olyan módszerek, amelyeket az objektumpéldány állapotinformációinak megváltoztatására írnak. A Car osztályban a mutációs módszereket írták:
- set_driver
- gyorshajtás_jegy
- kifizetni
A kapszulázás fogalma
A „beágyazás” olyan kifejezés, amelyet az objektum-orientált tervezés elvének leírására használnak, ahol a program összetevőinek nem szabad feltárniuk a megvalósításuk belső részleteit. A kapszulázás fogalmának megértése érdekében olvassa el a mi oldalunkat cikk a kapszulázásról.
Hiba az ellenőrzés során
A Car osztály megvalósítása nem robusztus, mivel valószínűleg összeomlik vagy meghibásodik, attól függően, hogy a programozótól milyen bemenetet kap.
Először is vegye figyelembe, hogy nem ellenőrizzük a speeding_ticket és a make_payment módszer paramétereinek típusait, és nem ellenőrizzük a konstruktor egyik paraméterének típusát sem. Ez a program összeomlásához vezethet, ha a felhasználó olyan érvet ad meg, amelyre nem számítottak. Például, ha a felhasználó olyan hívást kezdeményez, mint például a speeding_ticket ("chip ahoy"), a program összeomlik, mert a módszer által várt típus egész szám volt, és nem karakterlánc.
Most már megérted a Python osztály alapjait
Ebben a cikkben megismerkedtél a Python osztály és a Python osztály objektum fogalmával. Ismerkedtetek olyan ötletekkel is, amelyekre a python osztály épül, mint például: kapszulázás, „én” azonosító, hozzáférési módszerek és mutátoros módszerek.
Ezen információk birtokában képesnek kell lennie arra, hogy önállóan létrehozzon egy egyszerű Python osztályt, és tesztelje :)
Most a mobileszközön keresztül igazolnia kell személyazonosságát, hogy összekapcsolhassa fiókját az asztali számítógépen és a webalkalmazásban.
- Programozás
- Piton
Iratkozzon fel hírlevelünkre
Csatlakozzon hírlevelünkhöz, amely műszaki tippeket, véleményeket, ingyenes e-könyveket és exkluzív ajánlatokat tartalmaz!
Még egy lépés…!
Kérjük, erősítse meg e-mail címét az imént elküldött e-mailben.