Classes, Types, and Membership Tests

Objects defined by a class are not types

  • All classes have a type of ClassType
  • All instances have a type of InstanceType
  • Thus, type(a) == type(b) for any two instances of any classes.

Membership tests

  • isinstance(obj,c). Tests if obj is an instance of class c.
     class A: pass
     class B(A): pass
     
     a = A()
     b = B()
     isinstance(a,A)      # Returns 1
     isinstance(b,A)      # Returns 1 (B is a subclass of A)
     isinstance(a,B)      # Returns 0
  • issubclass(c1,c2). Tests if class c1 is a subclass of class c2.
     issubclass(B,A)      # Returns 1
     issubclass(A,B)      # Returns 0
<<< O'Reilly OSCON 2000, Introduction to Python, Slide 101
July 17, 2000, beazley@cs.uchicago.edu
>>>