predicciones - Conversión de objetos Python
predicciones python (2)
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
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
?
a = A() # parent class
b = B() # subclass
b.value = 3 # random setting of values
a.__dict__ = b.__dict__ # give object a b''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 las variables en a modificará la variable en b, a menos que haga una copia profunda:
import copy
a.__dict__ = copy.deepcopy(b.__dict__)