class A(object): pass class B(A): pass o = object() a = A() b = B() Embora eu possa mudar a.__class__, não posso fazer o mesmo o.__class__(gera um TypeErrorerro). Por quê? Por exemplo: isinstance(a, A) # True isinstance(a, B) # False a.__class__ = B isinstance(a, A) # True isinstance(a, B) #...