0Pricing
Python Academy · Lektion

Instanzmethoden und self

Schreiben Sie Methoden, die mit den eigenen Daten eines Objekts arbeiten.

Instanzmethoden und self ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Einführung

Instanzmethoden arbeiten mit den Daten eines bestimmten Objekts und verwenden self, um auf dessen Attribute zuzugreifen und sie zu ändern.

Instanzmethoden definieren

def method(self): innerhalb einer Klasse ist eine Instanzmethode. Sie erhält das Objekt als erstes 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 aufrufen

obj.method() ist syntaktische Kurzform für ClassName.method(obj). Python übergibt obj automatisch 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 zurückgeben

Die Rückgabe von self ermöglicht Method Chaining: 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)

Private Methoden (Konvention)

Ein Präfix mit _ signalisiert die interne Verwendung. Ein Präfix mit __ aktiviert Name Mangling: _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)

Properties als Methoden

@property verwandelt eine Methode in ein lesbares Attribut. Beim Zugriff sind keine Klammern erforderlich.
class Circle:
    def __init__(self, r): self.r = r
    @property
    def diameter(self): return self.r * 2
c = Circle(5)
print(c.diameter)  # no ()

Zustand verändern

Methoden, die self-Attribute ändern, verändern den Zustand des Objekts. Entwerfen Sie Methoden mit einer klaren Absicht: Abfrage oder Befehl.
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())

Objekte vergleichen

Standardmäßig vergleicht == die Identität. Implementieren Sie __eq__, um Werte zu vergleichen.
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))

Iterationsprotokoll

Implementieren Sie __iter__ und __next__, damit eine Klasse iterierbar wird und in for-Schleifen verwendet werden kann.
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)))

Protokoll für Context Manager

Implementieren Sie __enter__ und __exit__, damit eine Klasse in with-Anweisungen verwendet werden kann.
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 und Funktion

Beim Zugriff über die Klasse ist Dog.bark eine gewöhnliche Funktion. Über eine Instanz ist d.bark eine gebundene Methode – self ist bereits vorausgefüllt.
class Dog:
    def bark(self): print('woof')
print(type(Dog.bark))
print(type(Dog().bark))

Kurzer Test

Was ist Method Chaining, und was muss eine Methode zurückgeben, damit es unterstützt wird?

Zusammenfassung

Instanzmethoden: def m(self). Aufruf mit obj.m(). Für Method Chaining self zurückgeben. __eq__/__iter__/__enter__/__exit__ implementieren Protokolle. Das Präfix _ signalisiert interne Verwendung.

Weiter

Ausgezeichnet! Fahren Sie mit der nächsten Lektion fort, um Ihre Fähigkeiten zu vertiefen.

Häufig gestellte Fragen

Ist die Lektion „Instanzmethoden und self“ kostenlos?

Ja — der vollständige Text von „Instanzmethoden und self“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Instanzmethoden und self“?

Schreiben Sie Methoden, die mit den eigenen Daten eines Objekts arbeiten. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Instanzmethoden und self“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Klassen und die __init__-Methode
  2. Instanz- und Klassenattribute
  3. Instanzmethoden und self
  4. Magic Methods: __str__ und __repr__
← Zurück zu Python Academy