Conversión de objetos Python

Supongamos que tenemos un objeto k de tipo class A Definimos una segunda class B(A) . ¿Cuál es la mejor práctica para “convertir” el objeto k a la class B y preservar todos los datos en k ?

Esto hace la “conversión de clase” pero está sujeto a daños colaterales. Crear otro objeto y reemplazar su __dict__ como BrainCore publicado sería más seguro, pero este código hace lo que pidió, sin que se cree ningún objeto nuevo.

 class A(object): pass class B(A): def __add__(self, other): return self.value + other a = A() a.value = 5 a.__class__ = B print a + 10 
 a = A() # parent class b = B() # subclass b.value = 3 # random setting of values a.__dict__ = b.__dict__ # give object ab's values # now proceed to use object a 

¿Esto satisfaría su caso de uso? Nota: Solo las variables de instancia de b serán accesibles desde el objeto a, no desde las variables de clase de la clase B. Además, la modificación de variables en a modificará la variable en b, a menos que haga una copia en profundidad:

 import copy a.__dict__ = copy.deepcopy(b.__dict__)