Одно имя для метода класса и метода экземпляра?

Я хотел бы сделать что-то вроде этого:

class X:

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

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

А теперь позвониid() для класса или его экземпляра:

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

Очевидно, что этот точный код не работает, но есть ли подобный способ заставить его работать? Или любые другие обходные пути, чтобы получить такое поведение без слишком большого количества "хакерских" вещей?

Ответы на вопрос(1)

Ваш ответ на вопрос