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__ получаем имя строкой.
Как это работает
Оба варианта эквивалентны и часто применяются в логировании, отладке и фабричных функциях, когда нужно динамически отличать объекты по типу.