Python: Fortgeschritten (Decorators, Lambda & Exceptions)
97 cards · 🇺🇸 English → 🇩🇪 Deutsch
Decorators, Lambda-Funktionen, Exception-Handling und weitere fortgeschrittene Python-Konzepte.
Study all 97 cards for free
Flashcards, quizzes, pixel-art games and a daily review that remembers for you.
Try the first 10 cards
1 / 10Metaclass in Python
Tap the card for the answer · swipe right if you knew it, left if not
Already have an account? Sign in
Cards
- 1Metaclass in PythonEine Klasse einer Klasse, die festlegt, wie sich eine Klasse verhält. type ist die Standard-Metaklasse. Metaklassen steuern die Klassenerzeugung und können Klassenattribute verändern
- 2Create a custom metaclassclass MyMeta(type): def __new__(cls, name, bases, attrs): # attrs anpassen return super().__new__(cls, name, bases, attrs) class MyClass(metaclass=MyMeta): pass
- 3__new____new__ erzeugt die Instanz (gibt sie zurück), __init__ initialisiert sie (gibt None zurück). __new__ wird zuerst aufgerufen und erhält cls; __init__ erhält self
- 4Descriptor in PythonEin Objekt, das die Methoden __get__, __set__ oder __delete__ definiert. Descriptors steuern den Attributzugriff. Werden intern für properties, Methoden, classmethod und staticmethod verwendet
- 5Write a simple descriptorclass Descriptor: def __get__(self, obj, objtype=None): return value def __set__(self, obj, value): # Wert setzen class MyClass: attr = Descriptor()
- 6data vs non-data descriptorsDaten-Descriptor: definiert __set__ oder __delete__ (höhere Priorität, wird vor dem Instanz-__dict__ geprüft) Nicht-Daten-Descriptor: nur __get__ (niedrigere Priorität, Instanz-__dict__ wird zuerst geprüft)
- 7Method Resolution Order (MRO)Die Reihenfolge, in der Python in einer Klassenhierarchie nach Methoden/Attributen sucht. Verwendet den C3-Linearisierungsalgorithmus. Anzeige mit ClassName.__mro__ oder ClassName.mro()
- 8How does super() work?Gibt ein Proxy-Objekt zurück, das Methodenaufrufe an die nächste Klasse in der MRO delegiert. super().__init__() ruft die __init__ der Elternklasse gemäß MRO auf, nicht nur die der direkten Elternklasse
- 9__call__Macht eine Instanz wie eine Funktion aufrufbar. Wird bei der Syntax obj() aufgerufen: class Adder: def __call__(self, x, y): return x + y a = Adder() a(3, 5) # gibt 8 zurück
- 10__getattr__ vs __getattribute____getattr__: wird nur aufgerufen, wenn das Attribut auf normalem Weg NICHT gefunden wird __getattribute__: wird bei JEDEM Attributzugriff aufgerufen (mächtiger, aber auch gefährlicher)
- 11__setattr__Wird beim Setzen JEDES Attributs aufgerufen: obj.attr = value Vorsicht: self.x = y innerhalb von __setattr__ führt zu unendlicher Rekursion! Verwende object.__setattr__(self, 'x', y) oder __dict__
- 12__delattr__Wird beim Löschen eines Attributs aufgerufen: del obj.attr Ermöglicht benutzerdefiniertes Verhalten beim Löschen von Attributen
- 13__enter__ and __exit__ used forContext-Manager-Protokoll für 'with'-Anweisungen: __enter__ läuft am Anfang (gibt den Wert für 'as' zurück) __exit__ läuft am Ende (erhält ggf. Exception-Informationen)
- 14Write a simple context manager classclass MyContext: def __enter__(self): # Setup return self def __exit__(self, exc_type, exc_val, exc_tb): # Aufräumen return False # Exceptions nicht unterdrücken
- 15__slots__Beschränkt Instanzattribute auf eine feste Menge und verhindert die Erzeugung eines __dict__. Spart Speicher und bringt einen leichten Performance-Vorteil: class Point: __slots__ = ['x', 'y']
- 16__str__ vs __repr____str__: menschenlesbarer String (verwendet von str(), print()) __repr__: eindeutige Darstellung zum Debuggen (verwendet von repr(), interaktive Shell) Ziel: eval(repr(obj)) sollte obj wiederherstellen
- 17What comparison operators does __lt__ enable?__lt__ definiert den Operator <. Python leitet <=, > und >= automatisch ab, wenn du __lt__ und __eq__ definierst und den Decorator functools.total_ordering verwendest
- 18Rich comparison methods__lt__ (<), __le__ (<=), __eq__ (==), __ne__ (!=), __gt__ (>), __ge__ (>=) Implementiere diese, um das Vergleichsverhalten zu steuern
- 19What does __hash__ need to satisfy?Objekte, die als gleich gelten, müssen denselben Hashwert haben: wenn a == b, dann hash(a) == hash(b) Der Hash muss über die Lebensdauer des Objekts unveränderlich bleiben Standard: Hash basierend auf id()
- 20__bool__Definiert den Wahrheitswert eines Objekts im booleschen Kontext (if obj:). Falls nicht definiert, wird __len__ geprüft (0 ist False). Ist auch das nicht definiert, gilt das Objekt als True
- 21What arithmetic operators can you override?__add__ (+), __sub__ (-), __mul__ (*), __truediv__ (/), __floordiv__ (//), __mod__ (%), __pow__ (**) Auch die reflektierten Versionen: __radd__, __rsub__ usw.
- 22Reflected arithmetic methods__radd__, __rsub__ usw. Werden aufgerufen, wenn der linke Operand die Operation nicht unterstützt: 3 + obj ruft obj.__radd__(3) auf, wenn int kein __add__ für den Typ von obj hat
- 23__getitem__Ermöglicht die Index-Notation: obj[key] Wird für eigene Container, Mapping-Typen oder Sequenzen implementiert: class MyList: def __getitem__(self, index): return self.data[index]
- 24__setitem__Ermöglicht die Zuweisung über Index: obj[key] = value Wird für veränderliche Container verwendet
- 25__delitem__Ermöglicht das Löschen über Index: del obj[key] Entfernt ein Element aus dem Container
- 26__contains__Implementiert den 'in'-Operator: key in obj Falls nicht definiert, greift Python auf Iteration und Vergleich mittels __iter__ oder __getitem__ zurück
- 27__iter__ vs __next____iter__: gibt das Iterator-Objekt zurück (meist self) __next__: gibt den nächsten Wert zurück und löst StopIteration aus, wenn fertig Zusammen machen sie ein Objekt iterierbar
- 28__len__Gibt die Länge des Containers zurück, wird von len(obj) aufgerufen Sollte eine nicht-negative Ganzzahl zurückgeben
- 29__reversed__Gibt einen umgekehrten Iterator zurück: reversed(obj) Falls nicht definiert, greift reversed() auf __len__ und __getitem__ zurück
- 30__missing__ in dict subclassesWird von __getitem__ aufgerufen, wenn der Schlüssel nicht gefunden wird. Ermöglicht ein benutzerdefiniertes Standardverhalten: class MyDict(dict): def __missing__(self, key): return f'Standard für {key}'
And 67 more cards. Study the whole deck free
Articles about this deck
More Programming decks
See all- 🐍
Python: OOP Fundamentals
59 cards · 🇺🇸 English
Classes, inheritance, and core object-oriented Python concepts.
- 🐍
Python : avancé (décorateurs, lambda et exceptions)
97 cards · 🇺🇸 English
Décorateurs, fonctions lambda, gestion des exceptions et autres concepts Python avancés.
- 🐍
Python : structures de données et compréhensions
125 cards · 🇺🇸 English
Méthodes de listes/dictionnaires/ensembles ainsi que les compréhensions de listes, de dictionnaires et de générateurs.
- 🐍
Python: Funciones integradas
77 cards · 🇺🇸 English
Funciones integradas esenciales que todo desarrollador Python debería conocer.
- 🐍
Python : fondamentaux de la POO
59 cards · 🇺🇸 English
Classes, héritage et concepts fondamentaux de la programmation orientée objet en Python.
- 🐍
Python: Fundamentos de POO
59 cards · 🇺🇸 English
Clases, herencia y conceptos fundamentales de la programación orientada a objetos en Python.
