Python: получить имя класса объекта

В Python у каждого объекта есть скрытая ссылка на свой класс. Покажу два рабочих способа достать имя этого класса.


Что нужно знать


Пример 1: __class__.__name__

class Vehicle:
    def name(self, name):
        return name

v = Vehicle()
print(v.__class__.__name__)

Вывод

Vehicle

__class__ — атрибут любого экземпляра, который ссылается на его класс. __name__ — служебная переменная, содержащая имя в виде строки. Связка v.__class__.__name__ сначала достаёт класс Vehicle, затем берёт его имя.


Пример 2: type() с __name__

class Vehicle:
    def name(self, name):
        return name

v = Vehicle()
print(type(v).__name__)

Вывод

Vehicle

Встроенная функция type() для экземпляра возвращает его класс. Дальше через __name__ получаем имя строкой.


Как это работает

Оба варианта эквивалентны и часто применяются в логировании, отладке и фабричных функциях, когда нужно динамически отличать объекты по типу.