Een beginnershandleiding voor objectgeoriënteerd programmeren in Python

Een beginnershandleiding voor objectgeoriënteerd programmeren in Python

Python wordt overal in gebruikt, van de Raspberry Pi tot machine learning. Als je echter aan een groot project wilt werken, moet je weten hoe Python werkt met objectgeoriënteerd programmeren (OOP). Dit artikel behandelt de basisprincipes die u moet weten.





Als je niet echt van programmeren houdt, waarom zou je dan niet eens kijken naar deze beste Monty Python-schetsen? Ze hebben tenslotte de taal geïnspireerd!





Wacht, Python is geen echte taal?

Laten we één ding duidelijk maken: Python IS een echte programmeertaal, het is populair en het groeit snel. Gewoon omdat het leest als pseudocode en dat kan codeer Minecraft op de Pi ermee , dat betekent niet dat je het moet afdoen als een mindere taal.





OOP is de hoeksteen van de moderne softwareontwikkeling en Python is meer dan in staat om gelijke tred te houden. Het kan een of twee dingen anders doen dan andere reguliere talen, maar laat dat je niet afschrikken.

Deze tutorial gaat uit van een basiskennis van Python, maar we zullen onderweg alle complexe dingen behandelen. Als Python nieuw voor je is, waarom kijk je dan niet eens naar deze trucs om een ​​nieuwe programmeertaal te leren, of wat dacht je van een eenvoudig project zoals lezen en schrijven naar Google Spreadsheets met Python?



Vereisten en instellingen voor Python

Voordat u aan de slag gaat, wilt u misschien uw Python-ontwikkelomgeving instellen. We zullen gebruiken Python 3.6.5 , en hoewel je oudere versies kunt gebruiken, heb je minder problemen om mee te volgen als je een vrij nieuwe versie gebruikt.

U wilt een virtuele omgeving maken als u die nog niet heeft, en installeer PIP voor Python als dat niet is geïnstalleerd (het wordt echter geleverd met de meeste moderne installaties van Python). Als je die instellingen eenmaal hebt, ben je klaar om te gaan. Laten we beginnen!





De basis van Python: lessen

TOT klas is de basisbouwsteen van OOP. Een klas is als een plan of blauwdruk. Ze definiëren kenmerken van een object. Als je bijvoorbeeld een autoklasse hebt, kan er staan ​​dat er vier wielen zijn, minstens één stoel en een motor.

Zo maak je een klasse in Python:





class Vehicle:
''' This class defines vehicles. '''
pass

Simpel toch? Er zijn hier een paar dingen aan de hand. Let op de opmerking bovenaan de klas. Dit is een speciale opmerking genaamd a docstring . Het zou een beetje uitleg moeten geven over je code. Door de drievoudige aanhalingstekens te gebruiken ( '' ' ), vertel je Python dat dit een docstring is.

De doorgang trefwoord vertelt Python niets te doen. Het is een speciaal woord en je kunt het zien als een todo. Het zorgt ervoor dat je code wordt uitgevoerd, maar het doet eigenlijk niets.

Als u deze code uitvoert, ziet u dat er niets gebeurt. Jij moet instantiëren jij klas. Dit betekent in feite dat je een object gaat bouwen op basis van het plan dat in de klas is gedefinieerd. U kunt zoveel kopieën maken als u wilt, elk met verschillende eigenschappen. Zo doe je dat:

red_car = Vehicle()

Als u dit opnieuw uitvoert, ziet u dat er niets gebeurt. De code werkt correct, maar je hebt hem niet verteld om iets merkbaars te doen. De Voertuig class definieert blauwdrukken voor een voertuig, en deze laatste regel maakt een voertuigobject aan en geeft het de naam rode auto .

Het is mogelijk om zoveel objecten te maken als je wilt:

red_car = Vehicle()
green_car = Vehicle()
blue_car = Vehicle()

Laten we nog wat code toevoegen. Voeg een methode toe genaamd __in het__ naar de Voertuig klas:

class Vehicle:
''' This class defines vehicles. '''
def __init__(self, color='plain'):
''' Setup some custom car properties '''
print('New car made!')
self.color = color
red_car = Vehicle()
green_car = Vehicle()
blue_car = Vehicle()

Besteed hier speciale aandacht aan __in het__ methode. Het moet beginnen en eindigen met twee underscores. Dit is een speciale methode in Python. Het wordt automatisch aangeroepen wanneer u een nieuw object maakt. Als u deze code uitvoert, worden de woorden 'Nieuwe auto gemaakt!' weergegeven. drie keer.

Eindelijk, __in het__ neemt een aangepast argument genaamd kleur . Het gelijkteken en de tekenreeks die onmiddellijk volgen, vertellen Python om de kleur in te stellen op 'gewoon' als dit niet is opgegeven. U kunt uw instanties aanpassen om uw autokleur in te stellen bij het maken:

red_car = Vehicle(color='red')
green_car = Vehicle(color='green')
blue_car = Vehicle(color='blue')

Als u de autokleur afdrukt, ziet u dat elk exemplaar een andere kleur heeft, ook al zijn ze alle drie volgens dezelfde specificatie (de klasse) gemaakt. Python geeft je toegang tot bijna elke variabele of object --- niet veel andere talen laten je dit doen:

print(red_car.color)
print(green_car.color)
print(blue_car.color)

Dit werkt omdat je hebt toegewezen kleur tot zelf.kleur . Self is een ander speciaal sleutelwoord in Python en verwijst naar elke specifieke instantie van een klasse. Wanneer u self gebruikt, kunt u gegevens instellen of openen die uniek zijn voor die instantie. De rode auto heeft bijvoorbeeld een kleur rood.

Wijzig uw __in het__ methode om het autogeluid op te slaan in een variabele:

self.noise = 'Vroooom'

Om het autogeluid af te drukken, kunt u gewoon toegang krijgen tot de lawaai variabel, zoals je deed met kleur, maar dit is niet het beste idee. Wat als je, als je een auto bestuurt, wilt dat er tegelijkertijd een andere code wordt uitgevoerd, misschien code die je nog niet hebt geschreven? Of wat als u in de toekomst het rijgedrag van een auto wilt veranderen? Door het creëren van een functie (ook bekend als a methode ), kunt u goed controleren hoe dingen werken. Voeg dit toe onder je __in het__ methode:

def drive(self):
print(self.noise)

Je kunt deze methode heel eenvoudig noemen:

red_car.drive()

Telkens wanneer u de belt rit methode, zal Python het geluid afdrukken. Je kunt dit uitbreiden om allerlei taken uit te voeren, maar laat het voor nu zoals het is.

Goed gedaan! Inmiddels zou je de basis goed onder de knie moeten hebben. Je zou je eigen klassen moeten kunnen maken en gebruiken, elk met hun eigen unieke vaardigheden en functies.

Hoe zit het met privévariabelen in Python?

Privé-objecten zijn heel gebruikelijk in de meeste andere talen. Het zijn gewoon variabelen of functies die niet toegankelijk zijn buiten de klasse. Ze kunnen code zijn waaraan speciale voorwaarden moeten worden voldaan voordat ze worden gebruikt, of ze kunnen eenvoudigweg alleen voor intern gebruik zijn ontworpen. Wat de reden ook is, instanties hebben geen toegang tot privéleden... tenzij je codeert in Python.

Python heeft geen privéleden. In plaats daarvan vertrouwt Python op een eersysteem: 'We zijn allemaal instemmende volwassenen.' Python-programmeurs begrijpen dat je misschien wilt sleutelen aan de gevoelige interne onderdelen van een klas, en dat is oké, dus niets mag ooit echt ontoegankelijk zijn.

Python heeft echter een geaccepteerde conventie voor het markeren van bepaalde variabelen als 'privé' in de zin van 'Deze variabele is voor intern gebruik en je hoeft hem waarschijnlijk niet aan te raken.' De conventie is om variabelenamen vooraf te laten gaan met een onderstrepingsteken:

_some_secret_variable = 42

Dit fungeert als een waarschuwing voor andere programmeurs. Python zal je er niet van weerhouden om hier toegang toe te krijgen, maar het onderstrepingsteken adviseert je dat dit niet is ontworpen om op deze manier te worden gebruikt, en dat je op eigen risico verder moet gaan.

Het is soms de Python-manier om te sleutelen aan verborgen dingen, maar je loopt het risico dat dingen niet goed werken.

Overerving in Python begrijpen

Overerving is een andere manier om duplicatie en hergebruik van code te verminderen. Denkend aan een ouder- en kindrelatie, kan overerving de kind om gemeenschappelijke code te delen met de ouder . Laten we een elektrische auto implementeren, die van de ouder erft.

Voeg deze code toe onder je Voertuig klas:

class ElectricCar(Vehicle):
''' Electric vehicle class. '''
def charge(self):
print('Zzz')
electric_car = ElectricCar()
electric_car.charge()
electric_car.noise = 'Whoosh'
electric_car.drive()

Na de Elektrische auto is gedefinieerd, de Voertuig klasse wordt gespecificeerd tussen twee haakjes. Dit vertelt Python dat: Elektrische auto is een kind van Voertuig . Dit geeft het toegang tot alle gegevens en methoden die in Voertuig .

De elektrische auto heeft zijn eigen speciale methoden. Het kan opladen (iets dat andere voertuigen niet kunnen doen). Door het autogeluid te veranderen en vervolgens te gaan rijden, kun je zien dat de elektrische auto een ander geluid maakt en hoefde je de rijmethode niet te definiëren. Dit komt omdat de drive wordt geërfd van de ouder.

Breid je Python-kennis nog verder uit

Deze voorbeelden hebben laten zien hoe eenvoudig OOP kan zijn in Python. We hebben net de basis behandeld, maar als je die eenmaal onder de knie hebt, is de rest eenvoudig.

hoeveel data verbruikt streaming

Als je Python wilt blijven leren, of misschien deze OOP-vaardigheden in de praktijk wilt brengen, kijk dan eens naar arrays en lijsten in Python , of hoe zit het met het laten communiceren van Python en JavaScript?

Als je door dit alles meer wilt, vergeet dan niet om deze beste websites te bekijken om Python te leren.

Deel Deel Tweeten E-mail Verwijder deze Windows-bestanden en -mappen om schijfruimte vrij te maken

Wilt u schijfruimte op uw Windows-computer vrijmaken? Hier zijn de Windows-bestanden en -mappen die veilig kunnen worden verwijderd om schijfruimte vrij te maken.

Lees volgende
Gerelateerde onderwerpen
  • Programmeren
  • Programmeren
  • Python
  • Object georiënteerd programmeren
Over de auteur Joe Coburn(136 gepubliceerde artikelen)

Joe is afgestudeerd in computerwetenschappen aan de Universiteit van Lincoln, VK. Hij is een professionele softwareontwikkelaar en als hij niet met drones vliegt of muziek schrijft, is hij vaak te vinden om foto's te maken of video's te maken.

Meer van Joe Coburn

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren