4 Stimmen

Wie man den Objektnamen des self-Objekts aus der self-Methode in Python erhält

Ich versuche, einen Weg zu finden, um den Objektreferenznamen automatisch mit nur einem print object auszudrucken. Um genauer zu sein. Angenommen, ich habe eine Klasse:

class A:
    def __init__(self):
        self.cards = []

    def __str__(self):
        # Gebe eine Zeichenfolgenrepräsentation von A zurück
        return "A enthält " ...
    ...

Jetzt, wann immer ich ein Objekt erstelle

test = A()

und ich print test benutze, erhält man etwas wie (die Punkte sind nicht relevant)

A enthält ...

Was ich erreichen möchte, ist automatisch den Objektreferenznamen anstelle des Klassennamens auszudrucken:

test enthält ...

Das self.__class__ oder self.__name__ funktioniert nicht, da es einen seltsamen String wie zurückgibt.

Wie sollte __str__ implementiert werden, um dies zu erreichen? Vielen Dank im Voraus.

2voto

sshashank124 Punkte 30341

Wie bereits in den Kommentaren zu Ihrer Frage erwähnt wurde, ist es nicht möglich und auch nicht ratsam. Hier ist stattdessen ein ähnlicher Ansatz:

class A:
    def __init__(self, name):
        self.cards = []
        self.name = name

    def __str__(self):
        return '{} enthält ...'.format(self.name)

>>> test = A('Test')
>>> print test
Test enthält ...

>>> a = A('Hallo')
>>> print a
Hallo enthält ...

1voto

Ich weiß, ich antworte zu spät, aber wenn jemand hier stolpert, wie ich es hier tue, ist hier die Lösung:

type(self).__name__

Deine Implementierung wäre:

class A:
    def __init__(self, name):
        self.cards = []
        self.name = name

    def __str__(self):
        return '{} enthält...'.format(type(self).__name__)
a=A('test')
print(a)
# A enthält ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X