In een objectgeoriënteerde taal is een klasse een uitbreidbaar stuk code dat een sjabloon vertegenwoordigt voor het maken en gebruiken van de objecten van die klasse. Een object van een klasse verwijst eenvoudigweg naar een instantie van de gedefinieerde klasse.
Basisprincipes van Python Class
In de programmeertaal Python wordt elk stukje data weergegeven als een instantie van een bepaalde klasse. Raadpleeg onze als u de taal niet kent beginnershandleiding voor Python voordat u verder gaat.
Een klasse biedt een reeks gedragingen in de vorm van lidfuncties (ook bekend als methoden), met implementaties die gebruikelijk zijn voor alle instanties van die klasse, en het bepaalt ook de manier waarop de statusinformatie voor zijn instantie wordt weergegeven in de vorm van attributen.
Lees verder: Klassemethoden in Python: de belangrijke verschillen
De onderstaande code vertegenwoordigt een voorbeeld van een gedefinieerde klasse in Python. De klasse die in de code is gedefinieerd, biedt een implementatie van een RaceCar-klasse.
Elk exemplaar van de klasse biedt een eenvoudig model voor verschillende automerken en bevat de volgende status informatie: naam van de auto, naam van de bestuurder, kenteken van de auto, huidige snelheid, snelheidsheffing, en kleur.
Deze autoklasse modelleert een speciale sensor in elke auto die een boete van $ 50 oplegt tegen de bestuurder van de auto als hij of zij de wettelijke snelheidslimiet van 140 mijl per uur overschrijdt.
Voorbeeld van een klasse (autoklasse)
klasse auto:
#Constructeur
#de init-methode is verantwoordelijk voor het initialiseren van de waarden van de instantie #variabelen in de klasse.
def __init __ (zelf, auto_naam, bestuurdersnaam, licentienummer_nummer,
current_speed, speeding_charge, kleur):
self.car_name = auto_naam
self._driver_name = bestuurdersnaam
self._license_plate_number = licentiesjabloon_nummer
self._current_speed = current_speed
self._speeding_charge = speeding_charge
self._colour = kleur
#Accessor-methoden
#De methode get_car_name retourneert de naam van de auto
def get_car_name (zelf):
retourneer self._car_name
#De methode get_driver_name retourneert de naam van de driver
def get_driver_name (zelf):
retourneer self._driver_name
#De methode get_license_plate retourneert het kenteken van de auto
def get_license_plate (zelf):
retourneer self._license_plate
#De methode get_current_speed retourneert de huidige snelheid waarmee de auto # beweegt
def get_current_speed (zelf):
return self._current_speed
#De methode get_speeding_charge retourneert het totale geldbedrag dat het
#driver moet betalen voor te snel rijden
def get_speeding_charge (zelf):
return self._speeding_charge
#De get_colour-methode geeft de kleur van onze zoete rit terug!
def get_colour (zelf):
return self._colour
#Mutator-methoden
#De waarde set_driver verandert de bestuurder van onze auto.
def set_driver (self, new_driver):
self._driver_name = nieuwe_driver
#De speeding_ticket-methode zorgt ervoor dat de bestuurder 50 dollar in rekening wordt gebracht # wanneer hij of zij betrapt wordt op een snelheid van meer dan 140 mijl per uur :(
def speeding_ticket (self, current_speed):
if current_speed <= 140:
retourneer False
anders:
self._speeding_charge + = 50
terugkeer Waar
#De make_payment-methode zorgt ervoor dat de chauffeur al het # bedrag kan betalen dat hij of zij verschuldigd is voor snelheidsovertredingen.
def make_payment (zelf, bedrag_betaald):
self._speeding_charge - = bedrag_betaald
Een uitleg van het Python Class-voorbeeld
De "Zelf" -parameter
Merk allereerst op dat er een verschil is tussen de methodehandtekening die in de klasse is gedeclareerd en de methodehandtekening die door de programmeur wordt gebruikt om de functie aan te roepen. Bijvoorbeeld de get_colour methode zoals gedefinieerd in de klasse, heeft één parameter nodig die de ‘self’ parameter is.
Wanneer de programmeur deze methode echter op een instantie van de klasse aanroept, geeft hij geen parameters op. Ditzelfde fenomeen kan worden waargenomen in de speeding_ticket-methode die is gedefinieerd om twee parameters in de klasse te nemen (d.w.z. self en current_speed), maar de programmeur kan deze methode uitvoeren door alleen de waarde op te geven voor de ‘current_speed’ parameter.
Dit komt omdat het doel van de opgegeven ‘self’ -parameter is om de methode te binden aan de objectinstantie waarop het werd aangeroepen en het is geen waarde die door de programmeur moet worden gegeven.
De constructeur
Een constructor van een klasse verwijst naar de methode van de klasse die een gebruiker kan aanroepen om een objectinstantie van die klasse te maken. In de klasse Car kan de gebruiker een objectinstantie maken met behulp van de volgende syntaxis:
#creëren van onze eigen Bugatti :)
Auto ("Bugatti", "David Sasu", 90828, 0, 0, "Cherry Red")
De uitvoering van deze code resulteert in een aanroep van de __init__-methode in de Car-klasse. De verantwoordelijkheid van deze methode is om een nieuw aangemaakt kredietwagenobject te genereren met de opgegeven instantiewaarden. Elk object van de klasse Car bestaat uit zes instantievariabelen die zijn:
- _auto_naam
- _naam van de bestuurder
- _nummerplaat
- _huidige snelheid
- _speeding_charge
- _kleur
Accessor-methoden
Dit zijn methoden die zijn geschreven om toegang te krijgen tot de statusinformatie van een objectinstantie. In de klasse Car zijn de accessormethoden die zijn geschreven:
- get_car_name
- get_driver_name
- get_license_plate
- get_current_speed
- get_speeding_charge
- get_colour
Mutator-methoden:
Dit zijn methoden die zijn geschreven om de statusinformatie van een objectinstantie te wijzigen. In de klasse Car zijn de mutatormethoden die zijn geschreven:
- set_driver
- bekeuring
- betaling maken
Het concept van inkapseling
‘Inkapseling’ is een term die wordt gebruikt om een principe van objectgeoriënteerd ontwerp te beschrijven waarbij componenten van een programma de interne details van hun respectievelijke implementaties niet mogen onthullen. Zie onze om uw begrip van het concept van inkapseling te vergroten artikel over inkapseling.
Foutcontrole
Onze implementatie van de Car-klasse is niet robuust, omdat deze waarschijnlijk crasht of defect raakt, afhankelijk van de input die het ontvangt van de programmeur.
Merk allereerst op dat we de soorten parameters van de speeding_ticket en de make_payment-methoden niet controleren, noch de soorten parameters van de constructor controleren. Dit kan ertoe leiden dat het programma crasht als de gebruiker een argument opgeeft dat niet werd verwacht. Als de gebruiker bijvoorbeeld een aanroep doet zoals speeding_ticket ("chips ahoy"), zou het programma crashen omdat het type dat de methode verwachtte een geheel getal was en geen string.
Nu begrijp je de basisprincipes van Python Class
In dit artikel heb je kennis gemaakt met het concept van een Python-klasse en een Python-klasseobject. Je hebt ook kennis gemaakt met de ideeën waarop een python-klasse is gebouwd, zoals: inkapseling, de 'self'-identifier, accessormethoden en mutatormethoden.
Met deze informatie zou je in staat moeten zijn om zelf een eenvoudige Python-klasse te maken en deze te testen :)
Nu moet u uw identiteit verifiëren via uw mobiele apparaat om uw account op de desktop- en web-app te koppelen.
- Programmeren
- Python
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Nog een stap…!
Bevestig uw e-mailadres in de e-mail die we u zojuist hebben gestuurd.