Welkom terug.
In de vorige video zagen we dat we een grote booboo deden, dat wil zeggen dat we naam en woord overschreven, en
nu is al dat harde werk dat we in onze klas hebben gestopt hierdoor teniet gedaan.
Ik bedoel, zeker, als we een nieuw object instantiëren.
We zullen rennen en spreken, maar speler één is nu volledig nutteloos, het heeft geen naam en spreekt, maar het
zegt alleen Boo, volledig nutteloos.
In Python is er een idee van openbaar en privé, en dit houdt verband met onze discussie over
abstractie. Het idee achter abstractie is dat we informatie verbergen en alleen toegang geven tot dingen waar een
gebruiker zich zorgen over maakt.
Rechts.
Dus idealiter zouden we er geen toegang toe moeten hebben.
In het ideale geval zouden we niet in staat moeten zijn om, laten we zeggen, naam en leeftijd te wijzigen,
uit te voeren of aan te passen, want als we een spelerpersonage in ons spel maken, kan de speler hopelijk willekeurig zijn naam of
leeftijd veranderen.
En sluip ons spel binnen, dat is misschien pas 18 jaar en ouder.
Dus kunnen we een privévariabele maken in onze klas?
Nou, hier is het ding.
In sommige talen kunnen we privévariabelen hebben.
In een taal als Java kan ik bijvoorbeeld zeggen dat een attribuut op deze manier privé is, en ik zal er geen
toegang toe hebben en het niet kunnen wijzigen zoals ik op deze manier heb gedaan.
Maar in Python is er geen echte privacy, geen echte privévariabelen.
Dus hoe komen we hier omheen?
Wat we zouden doen is de naam onderstrepen of H.
Geeft dit een speciale kracht?
Nee, dit is slechts een conventie die is dat programmeurs, zoals Python-programmeurs, hebben vastgesteld dat,
hey, als we een onderstrepingsteken in onze code zien, dit hoogstwaarschijnlijk betekent dat dit een privévariabele moet zijn.
Zodat wanneer ik het gebruik in spreken, laten we zeggen onderstrepingsteken naam, onderstreping H.
En laten we hier commentaar op geven als ik klik, Ron.
Nou, ik moet dit uitvoeren omdat het nu een methode is, laten we uitvoeren.
En ik begrijp dat mijn naam Andre is, en ik ben 100 jaar oud.
Het werkt allemaal, maar als ik dit probeer te overschrijven en op uitvoeren klik.
OK, en nu, omdat het niet langer een methode is, laten we verwijderen, spreken en ik klik op uitvoeren.
Dit werkt nog steeds, en dat is omdat, zoals ik al zei, er geen echte privévariabelen zijn als programmeurs, we hebben besloten dat
onderstrepingstekens betekent dat je ons niet moet aanraken.
Raak dit alsjeblieft niet aan.
Je kunt nog steeds slecht zijn en zoiets doen.
Maar ik laat het je van tevoren weten.
Als u een onderstrepingsteken ziet, mag dit niet worden gewijzigd.
Dit moet privé zijn.
En zo bereiken we privacy in Python.
We waren het er allemaal over eens om te zeggen, laten we dit kleine ding privé houden.
Dus als je ooit een methode of een attribuut privé wilt houden, zet je er gewoon een onderstrepingsteken voor.
Maar het is geen garantie.
Hoe zit het met deze dubbele underscore init?
Nogmaals, dit is iets waar we het binnenkort over zullen hebben, maar het wordt een Dundar-methode genoemd.
Dat wil zeggen, het is ingebouwd in Python.
En we schrijven meestal nooit onze eigen Dundar-methoden, we zouden nooit dubbele onderstrepingstekens schrijven, schrijf dit.
Deze dubbele onderstrepingstekens, en er zijn er veel, hebben een speciale betekenis in Python.
En de reden dat hun naam zo is, is omdat ze zeggen, hé, als je een dubbel onderstrepingsteken schrijft voor je
variabele, doe je iets heel erg verkeerd, je staat op het punt iets te overschrijven.
Dus nogmaals, dit dubbele onderstrepingsteken is ook een conventie om mensen te laten weten dat je
dit niet echt moet aanraken of wijzigen bij elk gegevenstype.
Laten we zeggen een lijst.
Als ik Dot doe, zie je dat als je naar beneden scrolt.
Je hebt veel van deze Dundar-methoden, nogmaals, iets waar we het over gaan hebben.
Maar deze zijn hier om u te laten weten, overschrijf deze niet.
Als je iets doet als onderstrepingsteken, onderstrepingsteken, ik ken geen dokter zoals deze, dat is slecht.
Probeer het niet te wijzigen en toe te wijzen aan vijf.
Dus dit idee van een privéveld is belangrijk voor Python, en hoewel we veel dingen kunnen overschrijven, is het een
slechte gewoonte.
Maar laten we het terugbrengen tot abstractie.
Het idee is om deze code te abstraheren.
En hoewel het kan worden gewijzigd en overschreven door deze juiste conventies te gebruiken, zoals privé-attributen, zijn we in staat om
dingen te abstraheren, maar er toch voor te zorgen dat wat de gebruiker ook gebruikt, onze code
niet zal breken.
Ik zie je bij de volgende, Bob.