🐍

Python: Grundlagen der OOP

59 cards · 🇺🇸 English → 🇩🇪 Deutsch

Klassen, Vererbung und zentrale objektorientierte Konzepte in Python.

Study all 59 cards for free

Flashcards, quizzes, pixel-art games and a daily review that remembers for you.

Study this deck free

Try the first 10 cards

1 / 10
Question

Class in Python

Knew itLearning

Tap the card for the answer · swipe right if you knew it, left if not

Already have an account? Sign in

Cards

  1. 1Class in Python
    Eine Vorlage (Blueprint) zum Erstellen von Objekten, die Daten (Attribute) und Funktionalität (Methoden) bündelt. Wird mit dem Schlüsselwort 'class' definiert.
  2. 2Define a class
    class ClassName: def __init__(self, param): self.attribute = param
  3. 3Instance
    Ein aus einer Klasse erzeugtes Objekt. Jede Instanz hat eigene Daten, teilt sich aber die Methoden mit anderen Instanzen derselben Klasse.
  4. 4Self
    Verweis auf die aktuelle Instanz. Erster Parameter von Instanzmethoden. Ermöglicht den Zugriff auf Attribute und Methoden. Konvention, kein Schlüsselwort.
  5. 5__init__
    Konstruktormethode, die beim Erstellen einer neuen Instanz aufgerufen wird. Initialisiert die Instanzattribute. Beispiel: def __init__(self, name): self.name = name
  6. 6Instance attributes
    Variablen, die für jede Instanz individuell sind. Werden in __init__ oder anderen Methoden definiert. Zugriff über self.attribute_name.
  7. 7Class attributes
    Variablen, die von allen Instanzen einer Klasse gemeinsam genutzt werden. Werden direkt im Klassenkörper definiert, nicht in Methoden. Beispiel: class Dog: species = 'Canis familiaris'
  8. 8instance vs class attributes
    Instanzattribute sind für jede Instanz individuell (self.attr). Klassenattribute werden von allen Instanzen gemeinsam genutzt (ClassName.attr). Bei der Suche wird zuerst die Instanz, dann die Klasse geprüft.
  9. 9Instance methods
    In einer Klasse definierte Funktionen, die mit Instanzdaten arbeiten. Erhalten self als ersten Parameter. Beispiel: def bark(self): return f'{self.name} says woof!'
  10. 10Class methods
    Methoden, die mit der Klasse selbst arbeiten, nicht mit Instanzen. Mit @classmethod dekoriert. Erhalten cls als ersten Parameter. Beispiel: @classmethod def from_string(cls, string):
  11. 11Static methods
    Methoden, die weder auf die Instanz noch auf die Klasse zugreifen. Mit @staticmethod dekoriert. Kein self/cls-Parameter. Hilfsfunktionen, die der Klasse zugeordnet sind.
  12. 12Inheritance
    Mechanismus, der es einer Klasse erlaubt, Attribute und Methoden einer anderen Klasse zu erben. Die Kindklasse erweitert die Elternklasse. Syntax: class Child(Parent):
  13. 13Method overriding
    Die Kindklasse definiert eine Methode der Elternklasse neu. Beim Aufruf auf einer Instanz der Kindklasse wird deren Version ausgeführt. Mit super() kann die Version der Elternklasse aufgerufen werden.
  14. 14Super()
    Eingebaute Funktion zum Aufrufen von Methoden der Elternklasse. Häufig in __init__: super().__init__(args). Behandelt Mehrfachvererbung korrekt.
  15. 15Multiple inheritance
    Eine Klasse erbt von mehreren Elternklassen. Syntax: class Child(Parent1, Parent2). Die Methodenauflösung folgt der MRO (Method Resolution Order).
  16. 16MRO (Method Resolution Order)
    Die Reihenfolge, in der Python Methoden in der Vererbungshierarchie sucht. Anzeigbar mit ClassName.mro() oder ClassName.__mro__. Verwendet die C3-Linearisierung.
  17. 17Polymorphism
    Verschiedene Klassen können über dieselbe Schnittstelle verwendet werden. Objekte unterschiedlicher Klassen reagieren unterschiedlich auf denselben Methodenaufruf. In Python als Duck Typing umgesetzt.
  18. 18Encapsulation
    Bündelung von Daten und Methoden in einer Klasse. Kontrolle des Zugriffs auf den internen Zustand. Verwendung von Properties und privaten Attributen.
  19. 19Private attributes in Python
    Per Konvention mit Unterstrich versehen: _private oder __private. __name löst Name Mangling aus (_ClassName__name). Nicht wirklich privat, nur eine Konvention.
  20. 20Name mangling
    __attribute wird zu _ClassName__attribute. Hilft, Namenskonflikte bei der Vererbung zu vermeiden. Dient nicht der Sicherheit, sondern ist reine Konvention.
  21. 21@property
    Decorator, der eine Methode wie ein Attribut zugänglich macht. Ermöglicht Getter-/Setter-Logik bei gleichbleibender Attribut-Syntax. Beispiel: @property def name(self): return self._name
  22. 22Create a setter with @property
    @property für den Getter, dann @attribute.setter für den Setter. Beispiel: @property def name(self): return self._name @name.setter def name(self, value): self._name = value
  23. 23__str__
    Magische Methode, die die für Menschen lesbare String-Darstellung definiert. Wird von str() und print() aufgerufen. Beispiel: def __str__(self): return f'{self.name}'
  24. 24__repr__
    Magische Methode, die die String-Darstellung für Entwickler definiert. Sollte eindeutig sein, idealerweise gültiger Python-Code. Wird von repr() aufgerufen. Fallback für __str__.
  25. 25__str__ vs __repr__
    __str__: für Endnutzer lesbar. __repr__: eindeutig, für Entwickler und Debugging. __repr__ dient als Fallback, wenn __str__ fehlt.
  26. 26__len__
    Definiert das Verhalten von len(). Beispiel: def __len__(self): return len(self.items)
  27. 27__getitem__
    Ermöglicht Indexierung/Slicing: obj[key]. Beispiel: def __getitem__(self, index): return self.items[index]
  28. 28__setitem__
    Ermöglicht die Zuweisung per Index: obj[key] = value. Beispiel: def __setitem__(self, key, value): self.items[key] = value
  29. 29__eq__
    Definiert den Gleichheitsvergleich mit ==. Beispiel: def __eq__(self, other): return self.id == other.id
  30. 30Comparison magic methods
    __eq__ (==), __ne__ (!=), __lt__ (<), __le__ (<=), __gt__ (>), __ge__ (>=). Definieren, wie Objekte verglichen werden.

And 29 more cards. Study the whole deck free

Articles about this deck

More Programming decks

See all
Study all 59 cards free