Einführung
In diesem Projekt lernst du, wie du eine Waffenfabrik-Klasse implementierst, die einzigartige IDs für Klonsoldaten in der Klonfabrik des Galaktischen Reiches generiert. Die Waffenfabrik-Klasse ist als Iterator entworfen, was es dir ermöglicht, eine Sequenz von einzigartigen IDs leicht zu generieren und zu verwalten.
👀 Vorschau
------test1-------
1000face
1000facf
1000fad0
------test2-------
1000f000
1000f001
1000f002
1000f003
1000f004
1000f005
1000f006
1000f007
1000f008
1000f009
1000f00a
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du eine benutzerdefinierte Iterator-Klasse in Python erstellst
- Wie du sequentiell einzigartige hexadezimale IDs generierst
- Wie du die Iterator-Klasse verwendest, um eine Sequenz von IDs zu generieren und zu verwalten
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Eine benutzerdefinierte Iterator-Klasse in Python zu implementieren
- Sequentiell einzigartige hexadezimale IDs zu generieren
- Eine Iterator-Klasse verwenden, um eine Sequenz von IDs zu verwalten
- Die Iterator-Klasse um zusätzliche Funktionen wie z. B. ID-Validierung zu erweitern
Implementiere die Waffenfabrik-Klasse
In diesem Schritt lernst du, wie du die Waffenfabrik-Klasse als Iterator-Klasse implementierst.
- Öffne die Datei
soldier_generator.pyin deinem Code-Editor. - Definiere die
Waffenfabrik-Klasse mit den folgenden Anforderungen:- Die
__init__()-Methode sollte einen String als Argument akzeptieren. Dieses Argument ist die Start-ID der Waffenfabrik. - Die
__next__()-Methode sollte die nächste ID in der Sequenz generieren. Die generierte ID sollte ein String aus 8 hexadezimalen Zeichen sein. - Die
__iter__()-Methode sollte dieWaffenfabrik-Instanz selbst zurückgeben, sodass die Klasse als Iterator verwendet werden kann.
- Die
Hier ist der Code für die Waffenfabrik-Klasse:
class WeaponFactory:
def __init__(self, start_id):
self.current_id = int(start_id, 16)
def __iter__(self):
return self
def __next__(self):
hex_id = hex(self.current_id)[2:]
self.current_id += 1
return hex_id.zfill(8)
In der __init__()-Methode initialisieren wir das Attribut current_id, indem wir die start_id-Zeichenfolge mit der int()-Funktion in eine Ganzzahl umwandeln, wobei die Basis 16 (hexadezimal) ist.
In der __next__()-Methode generieren wir die nächste ID, indem wir die current_id mit der hex()-Funktion in einen hexadezimalen String umwandeln und dann das führende '0x' mit dem Slicing [2:] entfernen. Danach erhöhen wir die current_id um 1. Schließlich verwenden wir die zfill()-Methode, um sicherzustellen, dass die ID-Zeichenfolge immer 8 Zeichen lang ist und bei Bedarf mit führenden Nullen aufgefüllt wird.
Die __iter__()-Methode gibt einfach die Waffenfabrik-Instanz selbst zurück, sodass die Klasse als Iterator verwendet werden kann.
Teste die Waffenfabrik-Klasse
Jetzt, da du die Waffenfabrik-Klasse implementiert hast, testen wir sie, um sicherzustellen, dass sie wie erwartet funktioniert.
- Füge den folgenden Code in den
if __name__ == "__main__":-Block in dersoldier_generator.py-Datei hinzu:
wf = WeaponFactory("1000face")
print("------test1-------")
print(next(wf)) ## Ausgabe: '1000face'
print(next(wf)) ## Ausgabe: '1000facf'
print(next(wf)) ## Ausgabe: '1000fad0'
count = 0
max_count = 10
print("------test2-------")
for id in WeaponFactory("1000f000"):
print(id)
count += 1
if count > max_count:
break
- Speichere die
soldier_generator.py-Datei und führe das Skript aus:
python3 soldier_generator.py
Die Ausgabe sollte wie folgt sein:
------test1-------
1000face
1000facf
1000fad0
------test2-------
1000f000
1000f001
1000f002
1000f003
1000f004
1000f005
1000f006
1000f007
1000f008
1000f009
1000f00a
Dies bestätigt, dass die Waffenfabrik-Klasse wie erwartet funktioniert, die nächste ID in der Sequenz generiert, wenn die __next__()-Methode aufgerufen wird, und über die IDs iteriert, wenn als Iterator verwendet.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.



