Предположим, что у нас есть объект k
типа class A
. Мы определили вторую class B(A)
. Какова наилучшая практика для "преобразования" объекта k
в class B
и сохранения всех данных в k
?
Преобразование объектов Python
Ответ 1
Это делает "преобразование класса", но оно подлежит побочным повреждениям. Создание другого объекта и замена его __dict__
в качестве опубликованного BrainCore будет более безопасным - но этот код делает то, что вы просили, без создания нового объекта.
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
Ответ 2
a = A() # parent class
b = B() # subclass
b.value = 3 # random setting of values
a.__dict__ = b.__dict__ # give object a b values
# now proceed to use object a
Будет ли это соответствовать вашему варианту использования? Примечание. Только переменные экземпляра b будут доступны из объектов a, а не переменных класса B. Кроме того, изменение переменных в изменит переменную в b, если вы не сделаете глубокую копию:
import copy
a.__dict__ = copy.deepcopy(b.__dict__)