The Python’s isinstance()
function checks whether the object or variable is an instance of the specified class type or data type.
For example, isinstance(name, str)
checks if name
is an instance of a class str
.
Also, Solve: Python Basic Exercise and Beginners Quiz
Table of contents
How To Use isinstance() Function in Python
Let’s see the syntax first before moving to the example.
Syntax:
isinstance(object, classinfo)
- It takes two arguments, and both are mandatory.
- The
isinstance()
function checks if theobject
argument is an instance or subclass ofclassinfo
class argument

Using isinstance()
function, we can test whether an object/variable is an instance of the specified type or class such as int or list. In the case of inheritance, we can checks if the specified class is the parent class of an object.
- Pass object to isinstance()
Pass the variable you want to check as
object
argument to theisinstance()
. Here the object can be any class object or any variable name - Specify the Class or Type name as a
classinfo
argumentFor example,
isinstance(x, int)
to check ifx
is an instance of a classint
.classinfo
is a type name or Class name you want to check against the variable. Here you can specify data type name or Class name.
You can also pass multiple classes/types in a tuple format. For example, you can passint
,str
,list
,dict
, or any user-created class. - Execute your operation, If result is True
The
isinstance()
returns True if an object or variable is of a specified type otherwise False.
Example
Using isintance() we can verify whether a variable is a number or string. Let’s assume variable num = 90
, and you want to check whether num is an instance of an int type.
num = 90
result = isinstance(num, int)
if result:
print("Yes")
else:
print("No")
Output:
Yes
As we can see in the output, the isinstance()
returned True
because num
hold an integer value.
Note: If the classinfo
argument is not a Class, type, or tuple of types, a TypeError
exception is raised.
isinstance() With Built-In Types
As you know, Every value (variable) in Python has a type. In Python, we can use different built-in types such as int
, float
, list, tuple, strings, dictionary. Most of the time, you want to check the type of value to do some operations. In this case, isinstance()
function is useful.
# Check if 80 is an instance of class int
number = 80
print(isinstance(number, int))
# output True
print(isinstance(number, float))
# output False
pi = 3.14
# Check 3.14 is an instance of class float
print(isinstance(pi, float))
# Output True
# Check if (1 + 2j) is an instance of complex
complex_num = 1 + 2j
print(isinstance(complex_num, complex))
# Output True
# Check if 'PYnative' is an instance of class string
name = "PYnative.com"
print(isinstance(name, str))
# Output True
# Check if names is an instance of class list
names = ["Eric", "Scott", "Kelly"]
print(isinstance(names, list))
# Output True
# Check if student_report is an instance of class dict
student_report = {"John": 80, "Eric": 70, "Donald": 90}
print(isinstance(student_report, dict))
# Output True
# Check if names is an instance of class tuple
names = ("Sam", "Kelly", 'Emma')
print(isinstance(names, tuple))
# Output True
# Check if numbers is an instance of class tuple
numbers = {11, 22, 33, 44, 55}
print(isinstance(numbers, set))
# Output True
Note: If we use the isinstance()
with any variable or object with a None
, it returns False
. Let see the simple example of it.
var = None
# empty but not None
s1 = ''
print(isinstance(var, float))
# Output False
print(isinstance(s1, str))
# Output True
isinstance() With Multiple Classes
You can also check the instance with multiple types. Let’s say you have a variable, and you wanted to check whether it holds any numeric value or not, for example, a numeric value can be an int
or float
.
To verify whether a variable is an instance of one of the specified types, we need to mention all types in a tuple and pass it to the classInfo argument of isinstance()
.
Example
def check_number(var):
if isinstance(var, (int, float)):
print('variable', var, 'is instance of numeric type')
else:
print('variable', var, 'is not instance of numeric type')
num1 = 80
check_number(num1)
# Output variable 80 is instance of numeric type
num2 = 55.70
check_number(num2)
# Output variable 55.7 is instance of numeric type
num3 = '20'
check_number(num3)
# Output variable '20' is not instance of numeric type
isinstance() With Python Class
The isinstance()
works as a comparison operator, and it compares the object with the specified class type.
You can verify if the emp
object is an instance of a user-defined class Employee using the isinstance()
function. It must return True.
class Employee:
def __init__(self, name, salary):
self.name = name
self.salary = salary
class Person:
def __init__(self, name, sex):
self.name = name
self.sex = sex
emp = Employee("Emma", 11000)
per = Person("Brent", "male")
# Checking if a emp object is an instance of Employee
print(isinstance(emp, Employee))
# Output True
# Checking if the per object is an instance of Employee
print(isinstance(per, Employee))
# Output False
isinstance() function With Inheritance
The object of the subclass type is also a type of parent class. For example, If Car is a subclass of a Vehicle, then the object of Car can be referred to by either Car or Vehicle. In this case, the isinstance(carObject, Vehicle)
will return True
.
The isinstance()
function works on the principle of the is-a relationship. The concept of an is-a relationship is based on class inheritance.
The instance()
returns True if the classinfo argument of the instance() is the object’s class’s parent class.
To demonstrate this, I have created two classes, Developer and PythonDeveoper. Here PythonDeveoper is a sub-class of a Developer class.
class Developer(object):
# Constructor
def __init__(self, name):
self.name = name
def display(self):
print("Developer:", self.name, "-")
class PythonDeveloper(Developer):
# Constructor
def __init__(self, name, language):
self.name = name
self.language = language
def display(self):
print("Python Developer:", self.name, "language:", self.language, "-")
# Object of PythonDeveloper
dev = PythonDeveloper("Eric", "Python")
# is PythonDeveloper object an instance of a PythonDeveloper Class
print(isinstance(dev, PythonDeveloper))
# Output True
# is python_dev object an instance of a Developer Class
print(isinstance(dev, Developer))
# Output True
Note: The isinstance()
function is beneficial for casting objects at runtime because once you get to know the given class is a subclass of a parent class, you can do casting appropriately if required.
isinstance with Python list
As you know, a Python list is used to store multiple values at the same time. These values can be of any data type like numbers, strings, or any Class objects.
In this section, we will test the following operations with the Python list using the isinstance()
function:
- Checking if an object is of type
list
in python. - Check if an element of a list is a list.
- Verify if elements of a list are numbers or strings.
- Python check if all elements of a list are the same type
Checking if an object is an instance of a list type
sample_list = ["Emma", "Stevan", "Brent"]
res = isinstance(sample_list, list)
print(sample_list, 'is instance of list?', res)
# Output 'Emma', 'Stevan', 'Brent'] is instance of list? True
Check if an element of a list is a nested list
To check if one of the elements in the list is itself a list. For example, you have the following list, Use the isinstance()
to verify if the list contains a nested list
sampleList = ['Emma', 'Stevan', ['Jordan', 'Donald', 'Sam']]
Iterate a list and verify each element’s class, and if it a list type, we can say that the list contains a nested list.
sample_list = ['Emma', 'Stevan', ['Jordan', 'Donald', 'Sam']]
for item in sample_list:
if isinstance(item, list):
print("Yes", item, 'is a nested list')
# Output Yes ['Jordan', 'Donald', 'Sam'] is a nested list
Check if elements of a list are numbers or strings
Check each element’s type with multiple numeric types such as int
, float
, and complex
using the isinstance()
function.
To find all string variables, Check each element’s type with str
type.
sample_list = ['Emma', 'Stevan', 12, 45.6, 1 + 2j, "Eric", ]
number_list = []
string_list = []
for item in sample_list:
if isinstance(item, (int, float, complex)):
number_list.append(item)
elif isinstance(item, str):
string_list.append(item)
# String List
print(string_list)
# Output ['Emma', 'Stevan', 'Eric']
# Number list
print(number_list)
# Output [12, 45.6, (1+2j)]
Next steps
Let me know your comments and feedback in the section below.
Solve: