Python Name einer klassen-Instanz anfragen

_Phoenix_

Cadet 3rd Year
Registriert
Juni 2020
Beiträge
38
Hallo zusammen,
Ich wollte das bei Zeile 9 der Name der Instanz ausgegeben wird stattdessen bekomme ich diese Ausgabe:
Code:
<__main__.Kaempfer object at 0x0147AAA8>sind die Leben ausgegangen
20
0

Was muss ich ändern damit dann der Output zu:
Gegner sind die Leben ausgegebenen

Hier mein Code:
Python:
class Kaempfer:
    def __init__(self, lifepoints, damage):
        self.damage = damage
        self.lifepoints = lifepoints

    def dealdamagae(self,target):
        target.lifepoints -= self.damage
        if target.lifepoints == 0:
            print(str(target)+" sind die Leben ausgegangen")

    def regeneration(self, addlife):
        self.lifepoints += addlife


Angreifer = Kaempfer(20, 20)
Gegner = Kaempfer(20, 3)

Angreifer.dealdamagae(Gegner)

print(Angreifer.lifepoints)
print(Gegner.lifepoints)
 
Du musst den namen als variable innerhalb des objekts speichern
 
  • Gefällt mir
Reaktionen: Raijin
  • Gefällt mir
Reaktionen: Raijin und adAstra
Natürlich kann man mit einer tostring-Methode die Ausgabe verändern, aber das ändert nichts daran, dass irgendwo den Namen des Objekts herbekommen muss. Man müsste also nach wie vor wie von @Ebrithil vorgeschlagen den Namen im Objekt selbst speichern oder ggfs wie in meinem Link über ein importiertes Paket darauf zugreifen. Wobei ich dazu sagen muss, dass ich das nicht ausprobiert habe.
Ergänzung ()

Ebrithil schrieb:
Alles andere ist einfach unsauber hingehackt imho
Da gebe ich dir grundsätzlich Recht. Ein Property "Name" ist bei einem Objekt üblich, ungeachtet dessen in welcher Variable das Objekt letztendlich gespeichert wird.
 
Zuletzt bearbeitet:
Zurück
Oben