Nyheter i Android, Telefoner, Prylar Och Recensioner

Hur man skapar en enkel klass i Python

I ett objektorienterat språk är en klass en utökbar kodbit som representerar en mall för att skapa och använda objekten i den klassen. Ett objekt i en klass hänvisar helt enkelt till en instans av den definierade klassen.

Grunderna i Python Class

I programmeringsspråket Python representeras varje databit som en instans av någon klass. Om du inte är bekant med språket, se vår nybörjarguide till Python innan du går vidare.

En klass tillhandahåller en uppsättning beteenden i form av medlemsfunktioner (även känd som metoder), som har implementeringar som är gemensamma för alla instanser av den klassen, och den bestämmer också hur tillståndsinformationen för dess instans representeras i form av attribut.

Koden nedan representerar ett exempel på en definierad klass i Python. Klassen som definieras i koden tillhandahåller en implementering av en RaceCar-klass.

Varje instans av klassen tillhandahåller en enkel modell för olika bilmärken och den innehåller följande statusinformation: bilens namn, förarens namn, bilens registreringsnummer, aktuell hastighet, fortkörningsavgift och färg.

Denna bilklass, modellerar en speciell sensor i varje bil som registrerar böter på $50 mot föraren av bilen om han eller hon överskrider den lagliga hastighetsgränsen på 140 miles per timme.

Exempel på en klass (bilklass)


class Car:
#Constructor
#the init method is responsible for initialising the values of the instance #variables in the class.
def __init__(self, car_name, driver_name, license_plate_number,
current_speed, speeding_charge, colour):
self.car_name = car_name
self._driver_name = driver_name
self._license_plate_number = license_plate_number
self._current_speed = current_speed
self._speeding_charge = speeding_charge
self._colour = colour
#Accessor methods
#The get_car_name method returns the name of the car
def get_car_name(self):
return self._car_name
#The get_driver_name method returns the name of the driver
def get_driver_name(self):
return self._driver_name
#The get_license_plate method returns the license plate of the car
def get_license_plate(self):
return self._license_plate
#The get_current_speed method returns the current speed at which the car is #moving
def get_current_speed(self):
return self._current_speed
#The get_speeding_charge method returns the total amount of money that the
#driver has to pay for over-speeding
def get_speeding_charge(self):
return self._speeding_charge
#The get_colour method returns the colour of our sweet ride!
def get_colour(self):
return self._colour
#Mutator methods
#The set_driver value changes the driver of our car.
def set_driver(self, new_driver):
self._driver_name = new_driver
#The speeding_ticket method ensures that the driver is charged 50 bucks when#he or she caught speeding above 140 miles per hour :(
def speeding_ticket(self, current_speed):
if current_speed <= 140:
return False
else:
self._speeding_charge += 50
return True
#The make_payment method ensures that the driver is able to pay for all the #amount that he or she owes for speeding ticket charges.
def make_payment(self, amount_paid):
self._speeding_charge -= amount_paid

En förklaring av Python-klassexemplet

“Själv”-parametern

För det första, notera att det finns en skillnad mellan metodsignaturen som deklareras i klassen och metodsignaturen som används av programmeraren för att anropa funktionen. Till exempel få_färg Metoden som definieras i klassen tar en parameter som är parametern ‘self’.

Relaterad  Google Pixel 3 XL: detta reptest visar hur lätt ryggen kan repas, i video

Men när programmeraren anropar den här metoden på en instans av klassen, tillhandahåller han inga parametrar. Samma fenomen kan observeras i metoden speeding_ticket som är definierad för att ta två parametrar i klassen (dvs self och current_speed), men programmeraren kan utföra denna metod genom att ange värdet för bara parametern ‘current_speed’.

Detta beror på att syftet med parametern ‘self’ som tillhandahålls är att binda metoden till objektinstansen som den anropades på och det är inte ett värde som ska ges av programmeraren.

Konstruktören

En konstruktör av en klass hänvisar till metoden för klassen som en användare kan anropa för att skapa en objektinstans av den klassen. I klassen Car kan användaren skapa en objektinstans genom att använda följande syntax:

#creating our very own Bugatti :)
Car(“Bugatti”, “David Sasu”, 90828, 0, 0, "Cherry Red")

Exekveringen av denna kod resulterar i ett anrop till metoden __init__ i klassen Car. Ansvaret för denna metod är att generera ett nyskapat kreditbilsobjekt med de angivna instansvärdena. Varje objekt i klassen Car består av sex instansvariabler som är:

_bilnamn _förarnamn _nummerskylt _nuvarande_hastighet _hastighetsavgift _färg

Tillbehörsmetoder

Dessa är metoder som är skrivna för att komma åt tillståndsinformationen för en objektinstans. I klassen Bil är tillbehörsmetoderna som skrevs:

get_car_name get_driver_name get_license_plate get_current_speed get_speeding_charge get_color

Mutatormetoder:

Dessa är metoder som är skrivna för att ändra tillståndsinformationen för en objektinstans. I klassen Bil är mutatormetoderna som skrevs:

set_driver speeding_ticket make_payment

Konceptet med inkapsling

‘Inkapsling’ är en term som används för att beskriva en princip för objektorienterad design där komponenter i ett program inte ska avslöja de interna detaljerna i sina respektive implementeringar. För att öka din förståelse för begreppet inkapsling, se vår artikel om inkapsling.

Relaterad  Är det möjligt att få Formidable Forms Pro gratis?

Felkontroll

Vår implementering av Car-klassen är inte robust eftersom den sannolikt kraschar eller inte fungerar beroende på input som den får från programmeraren.

Observera först att vi inte kontrollerar typerna av parametrar för speeding_ticket och make_payment-metoderna, och vi kontrollerar inte heller typen av någon av parametrarna för konstruktorn. Detta kan leda till att programmet kraschar om användaren ger ett argument som inte var väntat. Till exempel, om användaren ringer ett anrop som speeding_ticket(”chips ahoy”) skulle programmet krascha eftersom den typ som metoden förväntade sig var ett heltal och inte en sträng.

Nu förstår du Python Class Basics

I den här artikeln har du blivit introducerad till konceptet med en Python-klass och ett Python-klassobjekt. Du har också introducerats till de idéer som en pythonklass bygger på, såsom: inkapsling, “själv”-identifieraren, accessormetoder och mutatormetoder.

Med denna information bör du kunna skapa en enkel Python-klass på egen hand och testa den 🙂

Om författaren

David Sasu (1 artiklar publicerade)

Mer från David Sasu

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera

Table of Contents