@Sven7913: Um das mit den Abkürzungen noch mal zu unterstreichen: `hp` steht natürlich für `hit_points` und hier werden nicht die toten Orcs ausgefiltert, sondern die, die einfach zu erschöpft sind, um noch mal zuzuschlagen.
Was immer es ist, es wäre auch gut wenn man das im Funktionsnamen erkennen könnte. Also `remove_dead_orcs()` oder `remove_exhausted_orcs()` zum Beispiel. Oder `remove_orcs_without_homepages()`.
Der Namenszusatz `object` oder `objects` mach übrigens nur Sinn falls der ausserhalb der Programmiersprache, also in der Problemdomäne, eine Bedeutung hat. innerhalb von Python ist der sinnfrei. Den könnte man an alles anhängen, denn alles was man an einen Namen binden kann ist in Python ein Objekt. Das im Namen zu erwähnen, bringt dem Leser keinen Mehrwert.
Den Indexzugriff in die Liste würde ich persönlich nicht machen. Man braucht Indexzugriffe in Listen relativ selten. Wenn dann würde ich hier auch nicht `i` benutzen, sondern -1, denn das drückt besser aus, dass man das letzte Element meint, und es funktioniert auch falls man in dem Code nicht mit einer leeren Liste startet. Aber wie gesagt, eigentlich würde ich das ohne Index machen:
Code: Alles auswählen
orcs = []
for _ in range(20):
orc = AdultOrc()
print(orc)
orcs.append(orc)
Mir scheint das aber unnötig umständlich geschrieben zu sein, nur um da ein `print()` für Debuggingzwecke rein zu basteln. Denn eigentlich wäre das erstellen von 20 Orcs eine einfache „list comprehension“:
Da könnte man am Ende die ganze Liste per `print()` ausgeben, oder mit `pprint()` aus dem `pprint()`-Modul in der Standardbibliothek, oder mit `pprint()` oder `cpprint()` aus dem externen `prettyprinter`-Modul.
Oder, falls man wirklich die einzelnen erzeugten Werten zu dem Zeitpunkt sehen will, würde sich so etwas wie das externe `icecream`-Modul anbieten. Mit dessen `ic`-Funktion wird das Objekt nicht nur ausgegeben, sondern auch der Ausdruck der dazu geführt hat, und die Funktion gibt ihr Argument als Ergebnis zurück, so dass man das auch einfach mitten in anderen Ausdrücken, wie beispielsweise der „list comprehension“, anwenden kann.
Code: Alles auswählen
from icecream import ic
...
orcs = [ic(AdultOrc()) for _ in range(20)]