Search code examples
pythoninstanceofisinstance

Python - isinstance(classInfo, classInfo)


The Python documentation says that isinstance requires an instance object of a class and the class info. The problem is: I just have 2 class info object and have to check if class_inf1 is a instance of class_inf2

Example:

class Foo(object):
    pass

class Bar(Foo):
    pass

# It should check if Bar is a instance of Foo. Bar can either be one of many subclasses or 
# the same class.
isinstance(Bar, Foo)

# i.e.: the function I'm looking for should be working as if Bar was an object:
isinstance(Bar(), Foo)

In my more complex code, I can't know what Bar is because it is a variable. I can't initialize it because I don't know what parameters it takes and it might do some nasty things, too. (And I will never need to initialize this variable because it is kind of a test).


Solution

  • Your terminology is rather confused, but my best guess is that you want to check whether one class inherits from another. This is achieved via the issubclass builtin:

    class B(object):
        pass
    
    class D(B):
        pass
    
    print issubclass(B, object)
    print issubclass(D, B) # true
    # order matters:
    print issubclass(B, D) # false
    # it's transitive:
    print issubclass(D, object)
    # a class is a subclass of itself:
    print issubclass(B, B) # true