Bird
Raised Fist0
Pythonprogramming~20 mins

type() and isinstance() in Python - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
๐ŸŽ–๏ธ
Type Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
โ“ Predict Output
intermediate
2:00remaining
Output of type() with subclass instance
What is the output of this code?
Python
class Animal:
    pass

class Dog(Animal):
    pass

pet = Dog()
print(type(pet) == Animal)
ATrue
BFalse
CTypeError
DNameError
Attempts:
2 left
๐Ÿ’ก Hint
type() returns the exact class of the object, not its parent classes.
โ“ Predict Output
intermediate
2:00remaining
Using isinstance() with multiple classes
What will this code print?
Python
class Vehicle:
    pass

class Car(Vehicle):
    pass

class Bike(Vehicle):
    pass

obj = Car()
print(isinstance(obj, (Bike, Vehicle)))
ATypeError
BFalse
CTrue
DAttributeError
Attempts:
2 left
๐Ÿ’ก Hint
isinstance() returns True if the object is an instance of any class in the tuple.
โ“ Predict Output
advanced
2:00remaining
Difference between type() and isinstance()
What is the output of this code?
Python
class A:
    pass

class B(A):
    pass

obj = B()
print(type(obj) == A, isinstance(obj, A))
ATrue False
BTrue True
CFalse False
DFalse True
Attempts:
2 left
๐Ÿ’ก Hint
type() checks exact type, isinstance() checks inheritance too.
โ“ Predict Output
advanced
2:00remaining
What error does this code raise?
What error will this code raise when run?
Python
x = 5
print(isinstance(x, (int, str, list)))
print(type(x) in (int, str, list))
print(isinstance(x, int, str))
ATypeError
BSyntaxError
CFalse
DTrue
Attempts:
2 left
๐Ÿ’ก Hint
Check the number of arguments passed to isinstance().
๐Ÿง  Conceptual
expert
2:00remaining
Why use isinstance() over type()?
Which of the following is the best reason to prefer isinstance() over type() when checking an object's type?
Aisinstance() can check for subclasses, type() cannot
Btype() is slower than isinstance()
Ctype() can check multiple types at once, isinstance() cannot
Disinstance() only works with built-in types
Attempts:
2 left
๐Ÿ’ก Hint
Think about inheritance and flexibility.

Practice

(1/5)
1. What does the type() function do in Python?
easy
A. It creates a new type.
B. It checks if an object is an instance of a class or its subclass.
C. It converts an object to a string.
D. It returns the exact type of an object.

Solution

  1. Step 1: Understand the purpose of type()

    The type() function returns the exact type of the given object, like int, str, or list.
  2. Step 2: Compare with other options

    isinstance() checks type inheritance, not exact type. Conversion or creation of types is not done by type().
  3. Final Answer:

    It returns the exact type of an object. -> Option D
  4. Quick Check:

    type(obj) = exact type [OK]
Hint: Remember: type() gives exact type, isinstance() checks inheritance [OK]
Common Mistakes:
  • Confusing type() with isinstance()
  • Thinking type() converts or creates types
  • Assuming type() checks subclass relationships
2. Which of the following is the correct syntax to check if variable x is an instance of int?
easy
A. type(x) == isinstance(int)
B. isinstance(int, x)
C. isinstance(x, int)
D. type(x) is int()

Solution

  1. Step 1: Recall the syntax of isinstance()

    The correct syntax is isinstance(object, class_or_tuple). So, isinstance(x, int) checks if x is an int or subclass.
  2. Step 2: Analyze other options

    type(x) == isinstance(int) mixes type() and isinstance() wrongly. isinstance(int, x) reverses arguments. type(x) is int() incorrectly calls int as a function.
  3. Final Answer:

    isinstance(x, int) -> Option C
  4. Quick Check:

    isinstance(x, int) correct syntax [OK]
Hint: Use isinstance(obj, Type) to check type safely [OK]
Common Mistakes:
  • Swapping arguments in isinstance()
  • Using type() with wrong comparison
  • Calling type names as functions in checks
3. What will be the output of this code?
class Animal:
    pass

class Dog(Animal):
    pass

x = Dog()
print(isinstance(x, Animal))
print(type(x) == Animal)
medium
A. True\nFalse
B. False\nTrue
C. True\nTrue
D. False\nFalse

Solution

  1. Step 1: Understand isinstance() with inheritance

    x is an instance of Dog, which is a subclass of Animal. So, isinstance(x, Animal) returns True.
  2. Step 2: Understand type() equality check

    type(x) returns Dog, which is not equal to Animal. So, type(x) == Animal returns False.
  3. Final Answer:

    True\nFalse -> Option A
  4. Quick Check:

    isinstance() checks inheritance, type() exact type [OK]
Hint: isinstance() True if subclass; type() True only if exact type [OK]
Common Mistakes:
  • Assuming type() checks inheritance
  • Confusing output order
  • Thinking isinstance() returns False for subclass
4. Find the error in this code snippet:
def check_number(n):
    if type(n, int):
        return True
    else:
        return False

print(check_number(5))
medium
A. type() is used with two arguments incorrectly.
B. The function should use isinstance() instead of type().
C. The return statements are missing parentheses.
D. The print statement syntax is wrong.

Solution

  1. Step 1: Check type() usage

    type() takes one argument to return the type. Using two arguments like type(n, int) is invalid and causes a TypeError.
  2. Step 2: Identify correct usage

    To check if n is an int, use isinstance(n, int). The return statements and print syntax are correct.
  3. Final Answer:

    type() is used with two arguments incorrectly. -> Option A
  4. Quick Check:

    type() needs one argument [OK]
Hint: type() takes one argument; use isinstance() to check type [OK]
Common Mistakes:
  • Passing two arguments to type()
  • Confusing type() and isinstance() syntax
  • Thinking return needs parentheses
5. You have a list of mixed data:
class MyInt(int):
    pass
items = [123, 'hello', 45.6, True, MyInt(456)]
. You want to create a new list containing only integers (including booleans, since they are subclasses of int). Which code correctly uses isinstance() to do this?
hard
A. ints = [x for x in items if type(x) is int or type(x) is bool]
B. ints = [x for x in items if isinstance(x, int)]
C. ints = [x for x in items if isinstance(x, bool)]
D. ints = [x for x in items if type(x) == int]

Solution

  1. Step 1: Understand subclass behavior with isinstance()

    Booleans are subclasses of int in Python, so isinstance(True, int) returns True. Using isinstance(x, int) includes both ints and bools.
  2. Step 2: Compare with other options

    ints = [x for x in items if type(x) == int] excludes bools because type(True) is bool, not int. ints = [x for x in items if isinstance(x, bool)] selects only bools, not ints. ints = [x for x in items if type(x) is int or type(x) is bool] is verbose and misses subclass flexibility.
  3. Final Answer:

    ints = [x for x in items if isinstance(x, int)] -> Option B
  4. Quick Check:

    isinstance() includes subclasses [OK]
Hint: Use isinstance(x, int) to include bools as ints [OK]
Common Mistakes:
  • Using type() == int excludes bools
  • Selecting only bools instead of ints
  • Using complex or incorrect type checks