Gleicher Name für Klassenmethode und Instanzmethode?

Ich würde gerne so etwas machen:

class X:

    @classmethod
    def id(cls):
        return cls.__name__

    def id(self):
        return self.__class__.__name__

Und jetzt @ anrufid() für die Klasse oder eine Instanz davon:

>>> X.id()
'X'
>>> X().id()
'X'

Offensichtlich funktioniert dieser genaue Code nicht, aber gibt es eine ähnliche Möglichkeit, ihn zum Laufen zu bringen? Oder irgendwelche anderen Workarounds, um ein solches Verhalten ohne zu viel "hacky" Zeug zu bekommen?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage