Objectgeoriënteerd programmeren stelt ons in staat om objecten te maken die hun eigen methoden hebben, zoals run.
En attributen.
Eigenschappen.
Het is een geweldige manier om meer functionaliteit aan een taal toe te voegen en de echte wereld na te bootsen. We gebruiken bijvoorbeeld het
idee om voor een gamingbedrijf te werken.
Hoewel Python ons maar een paar gegevenstypes gaf, kon ik een spelerspersonage maken.
En nu is mijn baas blij omdat dit spelerspersonage overal in het spel kan worden gebruikt.
En alle andere codeurs hoeven deze regel alleen maar uit te voeren met de aangepaste naam en leeftijd van het personage.
Dus OP stelt ons in staat om code te schrijven die herhaalbaar, goed georganiseerd en ook geheugenefficiënt is.
Juist, want we schrijven dit maar één keer.
Dus als je een geweldige ontwikkelaar wilt zijn, is OP iets dat je moet weten
en dat je moet begrijpen, want, nou ja, dit is hoe je je code wilt
organiseren, minder procedureel denken en meer denken in termen van functionaliteit, gegevens groeperen zoals attributen, samen met methoden om deze
klasse te creëren die iets uit de echte wereld kan nabootsen.
Nu wil ik je hier een handig hulpmiddel laten zien.
We zagen dat wanneer ik player Dot doe, mijn editor me laat zien wat ik beschikbaar heb, de eigenschappen, evenals
deze paarse vakken, de methoden die ik beschikbaar heb.
En meteen zie je dat ik een naam heb en ren, maar dan heb ik al die andere die
ik standaard heb.
Dit zijn allemaal Dundar- of magische methoden waar we op in gaan.
Maar de sleutel hier is dat als ik iets als help doe, wat een nieuwe functie is die je misschien nog niet eerder
hebt gezien, en laten we hier commentaar op geven.
Als ik klik, ren dan weg.
Ik krijg eigenlijk, nou ja, de hele blauwdruk van het object.
Als ik zoiets als een lijst doe.
En ik klik op uitvoeren.
Nogmaals, het toont de blauwdruk die het heeft en dit is een geweldige manier om te zien welke klassenblauwdruk
sommige Python-gegevenstypen hebben.
Dit is iets waar we later op terug zullen komen.
Maar ik wil teruggaan naar dit spelerpersonage nu hier, we zagen dat we attributen kunnen creëren
en attributen zijn stukjes data die dynamisch zijn.
Dat wil zeggen, wanneer we een object instantiëren, zullen ze uniek zijn voor dat specifieke object, zoals naam en
leeftijd.
En we moesten dit zelf-sleutelwoord gebruiken om ervoor te zorgen dat het dynamisch was.
Er is echter nog iets dat het class-objectattribuut wordt genoemd, en het zou er zo uit kunnen zien, laten we zeggen dat we het personage van
de speler hadden en dat ze, laten we zeggen, een betalend lid moesten zijn om dit spel te kunnen spelen.
Je moet gespeeld hebben of een lidmaatschap hebben gekregen.
Dus laten we een lidmaatschap gelijk hebben.
Waar.
Attribuut nu, in tegenstelling tot deze, zie je dat het op dezelfde regel staat als onze methoden en
dit wordt een klasseobject genoemd.
Werkelijk.
En een klasseobjectattribuut is, in tegenstelling tot deze reguliere klasseattributen, anders omdat het niet dynamisch
is, het is statisch.
Dus als ik klik.
Ren hierheen en we willen zeker weten dat we iets printen, dus laten we de player printen.
En ik klik op uitvoeren.
Nou, ik krijg de speler, dat is geweldig, maar als ik lidmaatschap doe.
En ik klik op uitvoeren.
Kijk daar eens naar, ik krijg dat gelijk om op te kauwen als ik speler één hier doe.
Ook, en ik klik op uitvoeren.
Ik krijg zo dat alle spelers lidmaatschap hebben ingesteld op waar, maar dit is niet dynamisch.
Het is een klasseobjectattribuut, wat betekent dat het een echt attribuut is voor deze klasse.
En dit is iets dat we gebruiken als er geen verandering is.
Dit zal waar zijn en voor alle objecten bestaan, dus je kunt het niet echt wijzigen, het is alleen dat alle objecten die
we instantiëren er toegang toe hebben.
Dit verandert dus niet tussen instanties en we kunnen dit hier ook gebruiken of waar dan ook in deze
klassenblauwdruk, in feite.
Laten we bijvoorbeeld zeggen dat we wilden controleren of.
Het lidmaatschap bestaat, dus we controleren of het lidmaatschap waar is.
Wat ik bedoel, dat is het altijd.
Dus dit is een beetje overbodig, maar hier.
Ik kan alleen zeggen als lidmaatschap waar is, dan ga ik een naam en leeftijd toewijzen, maar om toegang te
krijgen tot het lidmaatschap, moet ik zelf Dorte-lidmaatschap doen, want onthoud, Zelf verwijst naar dit spelerpersonage
zodat als ik dit uitvoer.
Alles werkt nog, en als ik dat doe speler één punt naam.
Dit werkt nog steeds, of ik kan hiernaar verwijzen door het eigenlijke spelerspersonage, dus spelerspersonage, lidmaatschap.
Dus als ik hier op uitvoeren klik.
Dit werkt ook omdat het een class-objectattribuut is.
Als ik misschien zou rennen, laten we dit veranderen in schreeuwen en schreeuwen, het zal willen rennen.
Laten we deze regel verwijderen.
Het gaat afdrukken.
Een F-string die zegt dat mijn naam is.
En geef het een naam, denk je dat dit gaat werken, laten we het eens proberen, laten we zeggen schreeuwen.
En zorg ervoor dat we die methode uitvoeren en klik vervolgens opnieuw op shout.
Als ik klik, ren dan weg.
Ik krijg een luchtnaam is niet online gedefinieerd, 11, als ik hier naar regel elf ga.
Naam is niet gedefinieerd.
Waarom is dat?
Nou, omdat we onszelf niet hebben gebruikt.
Dus laten we de naam van de eigen stip doen.
En als ik op uitvoeren klik.
Daar ga je.
Mijn naam is Tom.
Mijn naam is Cindy.
OK, geweldig, en ik kan het aan jezelf, want ik geef het hier door als de eerste parameter en alle methoden
ontvangen de eerste parameter, een zelf zodat we ze kunnen gebruiken.
Maar kan ik gewoon speler, personage, domeinnaam doen als ik op uitvoeren klik?
Ik krijg een airplay, een personage heeft geen attribuutnaam.
Nu, waarom is dat?
Omdat naam geen kenmerk van een klasseobject is.
Het is niet echt een eigenschap of een attribuut van het personage van de speler.
Nee, het is gedefinieerd in onze constructorfunctie zijn init-functie.
Dus dat is een beetje een gotcha hier en iets dat je moet wennen aan een klasseobjectattribuut
is iets dat niet verandert in verschillende instanties versus een attribuut of een klasseattribuut is iets
dat dynamisch en specifiek is voor elke klasse voorwerp.
De manier waarop we er toegang toe hebben, is anders, waar we daadwerkelijk toegang hebben tot lidmaatschap zoals dit, maar
om overal in onze klas toegang te krijgen tot een naam of leeftijd, moeten we de selfie-naam gebruiken, daarom elke keer
dat we een methode in een klasse, zelfs als ik hier een nieuwe maak en laten we
zeggen dat deze nieuwe wordt uitgevoerd.
Nou, nogmaals, ik moet mezelf als parameter gebruiken en dan al het andere dat ik wil toevoegen.
En hier.
Als de tweede parameter, zodat wanneer ik klik, laten we zeggen uitvoeren.
Ik pas in de.
Hallo, zo'n argument.
Ik weet dat dit veel is, maar hopelijk begin je de klassenregels te volgen als je deze regels eenmaal
hebt onthouden, dan wordt het steeds gemakkelijker.
Maar we zullen dit een beetje meer oefenen in de volgende video.