How to Get the Class Name of a Python Object?

In Python, you can get an object's class name by accessing the special __name__ attribute on the return value of the built-in type() function (or the __class__ attribute):

type(object).__name__

# is equivalent to:
object.__class__.name

Generally, calling special attributes (i.e. those starting and ending with double underscores) directly is discouraged. Therefore, you should use the type() function instead of __class__ wherever possible. However, same is not true for __name__ as there's no function alternative for it.

For example, you can check the class name for a string like so:

name = "John Doe"

print(type(name).__name__) # "str"
print(name.__class__.__name__) # "str"

Similarly, for a list, you can check the class name like so:

numbers = [1, 2, 3, 4]

print(type(numbers).__name__) # "list"
print(numbers.__class__.__name__) # "list"

If you have a custom class, you can check the class name of its object instance like so:

class Person:
   def __init__(self, name, age):
      self.name = name
      self.age = age

person = Person("John Doe", 39)

print(type(person).__name__) # "Person"
print(person.__class__.__name__) # "Person"

This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.