Python Academy · Les

Instantiemethoden en self

Schrijf methoden die werken met de eigen gegevens van een object.

Les 3 van 414 stappen

Instantiemethoden en self is een gratis Python Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.

Inleiding

Instantiemethoden werken op de gegevens van een specifiek object en gebruiken self om de attributen ervan te benaderen en te wijzigen.

Instantiemethoden definiëren

def method(self): binnen een klasse is een instantiemethode. Deze ontvangt het object als eerste argument (self).
class Circle:
    def __init__(self, r): self.r = r
    def area(self):
        import math
        return math.pi * self.r**2
print(Circle(5).area())

Methoden aanroepen

obj.method() is een verkorte schrijfwijze voor ClassName.method(obj). Python geeft obj automatisch door als self.
class Dog:
    def __init__(self, name): self.name = name
    def bark(self): print(f'{self.name} says Woof!')
Dog('Rex').bark()

Methoden die self retourneren

Door self te retourneren kun je methoden aan elkaar koppelen: builder.set_name('x').set_age(3).build().
class Builder:
    def __init__(self): self.data = {}
    def set(self, k, v):
        self.data[k] = v
        return self
    def build(self): return self.data
result = Builder().set('x',1).set('y',2).build()
print(result)

Privémethoden (conventie)

Gebruik het voorvoegsel _ om intern gebruik aan te geven. Het voorvoegsel __ activeert naamvermenging: _ClassName__method.
class Account:
    def __init__(self, bal): self._bal = bal
    def _validate(self, amount): return amount > 0
    def deposit(self, amount):
        if self._validate(amount):
            self._bal += amount
a = Account(100)
a.deposit(50)
print(a._bal)

Eigenschappen als methoden

@property verandert een methode in een leesbaar attribuut. Bij het benaderen zijn geen haakjes nodig.
class Circle:
    def __init__(self, r): self.r = r
    @property
    def diameter(self): return self.r * 2
c = Circle(5)
print(c.diameter)  # no ()

Toestand wijzigen

Methoden die self-attributen wijzigen, veranderen de toestand van het object. Ontwerp methoden met een duidelijke bedoeling: opvragen of uitvoeren.
class Stack:
    def __init__(self): self.items = []
    def push(self, x): self.items.append(x)
    def pop(self): return self.items.pop()
    def peek(self): return self.items[-1]
s = Stack()
s.push(1); s.push(2)
print(s.pop(), s.peek())

Objecten vergelijken

Standaard vergelijkt == de identiteit. Implementeer __eq__ om op waarde te vergelijken.
class Point:
    def __init__(self, x, y): self.x,self.y=x,y
    def __eq__(self, other): return self.x==other.x and self.y==other.y
print(Point(1,2)==Point(1,2))

Iteratieprotocol

Implementeer __iter__ en __next__ om een klasse itereerbaar te maken — bruikbaar in for-lussen.
class Countdown:
    def __init__(self, n): self.n = n
    def __iter__(self): return self
    def __next__(self):
        if self.n <= 0: raise StopIteration
        self.n -= 1; return self.n + 1
print(list(Countdown(3)))

Protocol voor contextbeheerders

Implementeer __enter__ en __exit__ om een klasse bruikbaar te maken in with-instructies.
class Timer:
    def __enter__(self):
        import time
        self.start = time.time()
        return self
    def __exit__(self, *args):
        import time
        print(f'elapsed: {time.time()-self.start:.3f}s')
with Timer(): pass

Methode versus functie

Wanneer je Dog.bark via de klasse benadert, is het een gewone functie. Via een instantie is d.bark een gebonden methode — self is vooraf ingevuld.
class Dog:
    def bark(self): print('woof')
print(type(Dog.bark))
print(type(Dog().bark))

Korte controle

Wat betekent methoden aan elkaar koppelen en wat moet een methode retourneren om dit te ondersteunen?

Samenvatting

Instantiemethoden: def m(self). Roep ze aan als obj.m(). Retourneer self om methoden aan elkaar te koppelen. __eq__/__iter__/__enter__/__exit__ implementeren protocollen. Het voorvoegsel _ geeft intern gebruik aan.

Ga door

Uitstekend! Ga door naar de volgende les om je vaardigheden verder te ontwikkelen.
Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
76
Lessen
320

Veelgestelde vragen

Is de les “Instantiemethoden en self” gratis?

Ja — de volledige tekst van “Instantiemethoden en self” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.

Wat leer ik in “Instantiemethoden en self”?

Schrijf methoden die werken met de eigen gegevens van een object. Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Python Academy te beginnen?

Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Instantiemethoden en self”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Python Academy?

Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Klassen en de methode __init__
  2. Instantie- versus klasseattributen
  3. Instantiemethoden en self
  4. Magic methods: __str__ en __repr__
← Terug naar Python Academy