Skip to content
Foxipa
Code Completion 4 Challenges

Complete the Python Custom isinstance() and issubclass() Code

Practice implementing metaclass hooks that customize isinstance() and issubclass().

Advanced ~10 min read

Challenge 1

Make even integers satisfy isinstance(value, EvenNumber) by implementing the metaclass hook.

python Your answer
class NumberMeta(type):
    def __instancecheck__(cls, value):
        

class EvenNumber(metaclass=NumberMeta):
    pass

print(isinstance(8, EvenNumber))

Press Ctrl⌘Enter to check your answer

Challenge 2

Make classes with a run method satisfy issubclass(candidate, Runnable).

python Your answer
class RunnableMeta(type):
    def __subclasscheck__(cls, candidate):
        

class Runnable(metaclass=RunnableMeta):
    pass

class Job:
    def run(self):
        pass

print(issubclass(Job, Runnable))

Press Ctrl⌘Enter to check your answer

Challenge 3

Preserve ordinary inheritance and also accept objects tagged as special.

python Your answer
class TaggedMeta(type):
    def __instancecheck__(cls, value):
        

class Tagged(metaclass=TaggedMeta):
    pass

class Child(Tagged):
    pass

class External:
    tag = "special"

print(isinstance(Child(), Tagged))
print(isinstance(External(), Tagged))

Press Ctrl⌘Enter to check your answer

Challenge 4

Preserve ordinary inheritance and accept classes that define work().

python Your answer
class WorkerMeta(type):
    def __subclasscheck__(cls, candidate):
        

class Worker(metaclass=WorkerMeta):
    pass

class Employee(Worker):
    pass

class Contractor:
    def work(self):
        pass

print(issubclass(Employee, Worker))
print(issubclass(Contractor, Worker))

Press Ctrl⌘Enter to check your answer