Magiska metoder (__str__, __repr__ med flera)
Fördjupa dig i Pythons specialmetoder för att anpassa objekts beteende.
Magiska metoder (__str__, __repr__ med flera) är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 6 av 6. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 6 lektioner.
Introduktion till magiska metoder
Magiska metoder, även kallade dunder-metoder (en förkortning av 'double underscore'), är särskilda metoder i Python som gör det möjligt att definiera hur objekt beter sig i specifika situationer.
I den här lektionen lär du dig att använda vanliga magiska metoder som __str__, __repr__ och andra.

Vad är magiska metoder?
Magiska metoder är fördefinierade metoder i Python som anropas automatiskt när specifika operationer utförs på objekt. De kännetecknas av två understreck, som i __init__ eller __str__.
Metoden __init__
Metoden __init__ är en konstruktor som initierar ett nytt objekt. Den anropas automatiskt när ett objekt skapas:
# Using the __init__ method to initialize attributes
class Person:
def __init__(self, name, age):
self.name = name # Initialize the name attribute
self.age = age # Initialize the age attribute
# Creating an instance of Person
person = Person("Alice", 30)
print(person.name, person.age) # Outputs: Alice 30Metoden __str__
Metoden __str__ definierar ett objekts strängrepresentation när print() anropas:
# Defining the __str__ method
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Name: {self.name}, Age: {self.age}" # String representation
person = Person("Alice", 30)
print(person) # Outputs: Name: Alice, Age: 30Metoden __repr__
Metoden __repr__ tillhandahåller en officiell strängrepresentation av ett objekt och används ofta vid felsökning:
# Defining the __repr__ method
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person('{self.name}', {self.age})" # Debug-friendly representation
person = Person("Alice", 30)
print(repr(person)) # Outputs: Person('Alice', 30)Överlagra operatorer med magiska metoder
Du kan använda magiska metoder för att anpassa beteendet hos operatorer som + eller ==:
# Overloading the + operator with __add__
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Point(self.x + other.x, self.y + other.y) # Adding two points
def __str__(self):
return f"({self.x}, {self.y})"
point1 = Point(1, 2)
point2 = Point(3, 4)
result = point1 + point2 # Calls __add__
print(result) # Outputs: (4, 6)Vanliga magiska metoder
Här är några vanliga magiska metoder:
__len__: Definierar beteendet hos funktionenlen().__getitem__: Gör det möjligt att använda indexering som med en lista eller ordbok.__eq__: Anpassar likhetsjämförelsen med hjälp av==.
Använda __len__ och __getitem__
Du kan använda __len__ för att definiera längden på ett anpassat objekt och __getitem__ för att göra det indexerbart:
# Using __len__ and __getitem__ in a custom class
class CustomList:
def __init__(self, items):
self.items = items
def __len__(self):
return len(self.items) # Defines the behavior of len()
def __getitem__(self, index):
return self.items[index] # Enables indexing
custom_list = CustomList([1, 2, 3])
print(len(custom_list)) # Outputs: 3
print(custom_list[1]) # Outputs: 2Vanliga misstag med magiska metoder
Här är några misstag som bör undvikas:
- Att definiera en magisk metod utan att följa dess avsedda beteende.
- Att överlagra operatorer i onödan.
- Att glömma att implementera nödvändiga magiska metoder i anpassade datatyper.
Vad har vi lärt oss?
I den här lektionen har du lärt dig:
- Vad magiska metoder är och varför de är användbara.
- Hur du använder vanliga magiska metoder som
__init__,__str__och__repr__. - Hur du överlagrar operatorer med hjälp av magiska metoder.
Bra jobbat! Nu går vi vidare till nästa ämne.

Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 320
Vanliga frågor
Är lektionen ”Magiska metoder (__str__, __repr__ med flera)” gratis?
Ja – hela texten till ”Magiska metoder (__str__, __repr__ med flera)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 6 lektioner.
Vad lär jag mig i ”Magiska metoder (__str__, __repr__ med flera)”?
Fördjupa dig i Pythons specialmetoder för att anpassa objekts beteende. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Python Academy?
Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 6 av 6.
Hur lång tid tar lektionen ”Magiska metoder (__str__, __repr__ med flera)”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Python Academy-lektionen?
Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Klasser och objekt
- Attribut och metoder
- Arv
- Polymorfism
- Inkapsling och abstraktion
- Magiska metoder (__str__, __repr__ med flera)