Magic methods: __str__ en __repr__
Implementeer dunder-methoden voor leesbare representaties van objecten.
Magic methods: __str__ en __repr__ is een gratis Python Academy-les op CoddyKit. Dit is les 4 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.
Wat zijn magische methoden?
Magische (dunder)methoden zijn speciale methoden met dubbele underscores die Python in specifieke situaties aanroept, bijvoorbeeld bij afdrukken of vergelijken.
class Foo:
def __str__(self):
return "I am Foo"
f = Foo()
print(f) # I am Foo
print(str(f)) # I am Foo__repr__: weergave voor ontwikkelaars
__repr__ moet een ondubbelzinnige tekenreeks retourneren waarmee je het object idealiter opnieuw kunt maken. Deze wordt weergegeven in de REPL en gebruikt door repr().
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point({self.x}, {self.y})"
p = Point(3, 4)
print(repr(p)) # Point(3, 4)__str__: weergave voor gebruikers
__str__ levert een gebruiksvriendelijke tekenreeks. print() en str() roepen deze aan. Als deze ontbreekt, gebruikt Python __repr__ als terugval.
class Temperature:
def __init__(self, celsius):
self.celsius = celsius
def __str__(self):
return f"{self.celsius}°C"
def __repr__(self):
return f"Temperature({self.celsius})"
t = Temperature(100)
print(t) # 100°C
print(repr(t)) # Temperature(100)Wanneer elke methode wordt aangeroepen
__str__: print(), str(), f-strings. __repr__: REPL, repr(), containers die hun elementen weergeven.
class Item:
def __str__(self): return "str"
def __repr__(self): return "repr"
x = Item()
print(x) # str
print([x]) # [repr] ← list uses repr for elements__format__ voor aangepaste opmaak
Definieer __format__ om te bepalen hoe f-strings met opmaakspecificaties je object weergeven.
class Money:
def __init__(self, amount):
self.amount = amount
def __format__(self, spec):
if spec == "usd":
return f"${self.amount:.2f}"
return str(self.amount)
m = Money(9.5)
print(f"{m:usd}") # $9.50__bool__ voor waarheidswaarden
Met __bool__ kun je je object evalueren in booleaanse contexten. Retourneer True of False.
class Bag:
def __init__(self, items):
self.items = items
def __bool__(self):
return len(self.items) > 0
b = Bag([])
if not b:
print("Bag is empty") # Bag is empty__len__ voor len()
Met __len__ werkt len(obj). Deze methode wordt ook gebruikt door __bool__ wanneer __bool__ niet is gedefinieerd.
class Stack:
def __init__(self):
self.data = []
def push(self, v): self.data.append(v)
def __len__(self):
return len(self.data)
s = Stack()
s.push(1)
print(len(s)) # 1__eq__ voor gelijkheid
Definieer __eq__ om vast te leggen wanneer twee instanties gelijk zijn met ==.
class Vector:
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(Vector(1,2) == Vector(1,2)) # True__hash__ combineren met __eq__
Wanneer je __eq__ definieert, stelt Python __hash__ in op None, waardoor het object niet hashbaar is. Definieer ook __hash__ als je het object in verzamelingen of woordenboeken nodig hebt.
class Point:
def __init__(self, x, y): self.x, self.y = x, y
def __eq__(self, o): return (self.x, self.y) == (o.x, o.y)
def __hash__(self): return hash((self.x, self.y))
pts = {Point(1,2), Point(1,2)}
print(len(pts)) # 1__add__ en rekenkundige bewerkingen
Rekenkundige operatoren worden gekoppeld aan dundermethoden: __add__ voor +, __sub__ voor - enzovoort.
class Vector:
def __init__(self, x, y): self.x, self.y = x, y
def __add__(self, o): return Vector(self.x+o.x, self.y+o.y)
def __repr__(self): return f"Vector({self.x},{self.y})"
print(Vector(1,2) + Vector(3,4)) # Vector(4,6)__getitem__ voor indexering
Met __getitem__ kan je klasse indexering met vierkante haken ondersteunen, zoals obj[key].
class Matrix:
def __init__(self, data):
self.data = data
def __getitem__(self, idx):
return self.data[idx]
m = Matrix([[1,2],[3,4]])
print(m[0]) # [1, 2]
print(m[1][0]) # 3Korte controle
Welke dundermethode wordt aangeroepen wanneer je print(obj) gebruikt?
Samenvatting
Magische methoden geven je klassen Python-achtig gedrag. __repr__ is bedoeld voor ontwikkelaars en __str__ voor gebruikers. Definieer __eq__, __hash__ en rekenkundige dundermethoden om objecten volledig functioneel te maken.
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 “Magic methods: __str__ en __repr__” gratis?
Ja — de volledige tekst van “Magic methods: __str__ en __repr__” 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 “Magic methods: __str__ en __repr__”?
Implementeer dunder-methoden voor leesbare representaties van objecten. 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 4 van 4.
Hoe lang duurt de les “Magic methods: __str__ en __repr__”?
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
- Klassen en de methode __init__
- Instantie- versus klasseattributen
- Instantiemethoden en self
- Magic methods: __str__ en __repr__