Python Academy · Lektion

Magiska metoder (__str__, __repr__ med flera)

Fördjupa dig i Pythons specialmetoder för att anpassa objekts beteende.

Lektion 6 av 611 steg

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.

Magiska metoder (__str__, __repr__ med flera) — illustration 1

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 30

Metoden __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: 30

Metoden __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 funktionen len().
  • __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: 2

Vanliga 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.

Magiska metoder (__str__, __repr__ med flera) — illustration 11
Gratis att börja

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

  1. Klasser och objekt
  2. Attribut och metoder
  3. Arv
  4. Polymorfism
  5. Inkapsling och abstraktion
  6. Magiska metoder (__str__, __repr__ med flera)
← Tillbaka till Python Academy