Python - Anonymous Klassen und Objekte

Hallo, aufstrebende Programmierer! Heute werden wir uns in Python in ein spannendes und etwas geheimnisvolles Thema einarbeiten: Anonymous Klassen und Objekte. Keine Sorge, wenn diese Begriffe ein bisschen abschreckend klingen – am Ende dieser Anleitung werdet ihr sie wie ein Profi erstellen!

Python - Anonymous Class and Objects

Was sind Anonymous Klassen und Objekte?

Bevor wir in die Details einsteigen, lassen uns verstehen, was wir unter "anonym" im Programmieren verstehen. Genau wie eine Person anonym sein kann (ohne Namen), können wir in Python Klassen und Objekte erstellen, ohne ihnen explizite Namen zu geben. Cool, nicht wahr?

Eine Anonymous Klasse erstellen

Lassen uns mit der Erstellung einer anonymen Klasse beginnen. In Python erstellen wir typischerweise eine Klasse mit dem class-Schlüsselwort gefolgt von einem Namen. Aber was, wenn wir eine Klasse spontan erstellen möchten, ohne ihr einen Namen zu geben? Hier kommt es den anonymen Klassen zu gute!

Hier ist ein einfaches Beispiel:

AnonymousClass = type('AnonymousClass', (), {'greeting': 'Hallo, ich bin anonym!'})

Was ist da gerade passiert? Lassen uns das aufbrechen:

  1. Wir verwenden die type()-Funktion, um eine Klasse dynamisch zu erstellen.
  2. Das erste Argument 'AnonymousClass' ist der Name der Klasse (aber es wird nicht wirklich verwendet).
  3. Das zweite Argument () ist eine leere Tuple für Basisklassen (unsere Klasse erbt nicht von einer anderen Klasse).
  4. Das dritte Argument ist ein Wörterbuch, das die Klassenattribute und -methoden definiert.

Nun verwenden wir unsere anonyme Klasse:

obj = AnonymousClass()
print(obj.greeting)  # Ausgabe: Hallo, ich bin anonym!

Seht? Wir haben eine Klasse ohne das gewöhnliche class-Schlüsselwort erstellt, und sie funktioniert prima!

Ein Anonymous Objekt erstellen

Nun, da wir die anonymen Klassen beherrschen, gehen wir zu den anonymen Objekten über. Ein anonymes Objekt ist ein Objekt, das ohne Zuweisung zu einer Variablen erstellt wird. Es ist wie ein Stern, der am Himmel vorbeizieht – er erscheint, erfüllt seine Aufgabe und verschwindet!

Hier ist ein einfaches Beispiel:

print(type('Ich bin ein anonymes String-Objekt', (), {})())

Diese Zeile erstellt eine anonyme Klasse (wie wir es vorher taten) und erstellt sofort eine Instanz davon. Die () am Ende ruft den Konstruktor dieser neu erstellten Klasse auf.

Ausgabe:

<class '__main__.Ich bin ein anonymes String-Objekt'>

Nett, nicht wahr? Wir haben eine Klasse und ein Objekt in einer Zeile erstellt, ohne ihnen einen Namen zu geben, den wir später referenzieren können!

Beispiel für Anonymous Klasse und Objekt

Nun setzen wir es alles zusammen mit einem praktischeren Beispiel. Stellen wir uns vor, wir erstellen einen schnellen Rechner für einmaligen Gebrauch:

# Erstellen einer anonymen Klasse mit Methoden
Calculator = type('Calculator', (), {
'add': lambda self, x, y: x + y,
'subtract': lambda self, x, y: x - y,
'multiply': lambda self, x, y: x * y,
'divide': lambda self, x, y: x / y if y != 0 else 'Kann nicht durch null teilen'
})

# Erstellen eines anonymen Objekts und sofortige Verwendung
print(Calculator().add(5, 3))       # Ausgabe: 8
print(Calculator().subtract(10, 4)) # Ausgabe: 6
print(Calculator().multiply(2, 6))  # Ausgabe: 12
print(Calculator().divide(15, 3))   # Ausgabe: 5.0
print(Calculator().divide(10, 0))   # Ausgabe: Kann nicht durch null teilen

In diesem Beispiel haben wir eine anonyme Calculator Klasse mit vier Methoden erstellt. Dann haben wir anonyme Objekte dieser Klasse erstellt, um Berechnungen durchzuführen. Jedes Mal, wenn wir eine Methode aufrufen, erstellen wir ein neues anonymes Objekt, verwenden es einmal und lassen es dann gehen.

WannAnonymous Klassen und Objekte verwenden

Ihr fragt euch vielleicht, "Das ist cool, aber wann würde ich das tatsächlich verwenden?" Große Frage! Anonyme Klassen und Objekte sind besonders nützlich in Szenarien, in denen:

  1. Ihr eine schnelle, einmalige Klasse oder ein Objekt benötigt.
  2. Ihr Meta-Programmierung betutzt (Schreiben von Code, der Code schreibt).
  3. Ihr Decorators erstellt oder mit höheren Funktionen arbeitet.

Für die meisten täglichen Programmieraufgaben werdet ihr jedoch wahrscheinlich bei regulären benannten Klassen und Objekten bleiben. Anonyme Klassen und Objekte sind wie die Geheimagenten der Programmierwelt – sie sind mächtig, aber ihr seht sie nicht oft!

Methoden-Tabelle

Hier ist eine schnelle Referenztabelle der Methoden, die wir in unseren Beispielen verwendet haben:

Methode Beschreibung Beispiel
type() Erstellt ein neues Typ-Objekt (wird verwendet, um anonyme Klassen zu erstellen) type('ClassName', (), {})
lambda Erstellt anonyme Funktionen lambda x, y: x + y

Fazit

Herzlichen Glückwunsch! Ihr habt gerade ein neues Level in eurer Python-Reise freigeschaltet. Anonyme Klassen und Objekte mögen zu Beginn etwas abstrakt erscheinen, aber sie sind leistungsfähige Werkzeuge im Toolkit eines Python-Programmierers.

Denken Sie daran, der Schlüssel zur Meisterschaft dieser Konzepte ist das Üben. Versuchen Sie, Ihre eigenen anonymen Klassen und Objekte zu erstellen. Experimentieren Sie mit verschiedenen Attributen und Methoden. Je mehr Sie mit diesen Ideen spielen, desto mehr wohlfühler Sie werden.

Wenn wir das hier zusammenfassen, hier ist ein spaßiges Gedankenexperiment: Stellen Sie sich vor, Menschen könnten so flexibel sein wie Python-Objekte. Wir könnten eine anonyme "SuperHero" Klasse spontan erstellen, ihr "fly" und "save_the_day" Methoden geben und sofort zum Helden werden, den die Welt braucht! Während wir das im realen Leben (noch) nicht tun können, können wir es sicherlich in Python. Frohes Coden, zukünftige Python-Zauberer!

Credits: Image by storyset