Подтвердить что ты не робот

Преобразование объектов Python

Предположим, что у нас есть объект k типа class A. Мы определили вторую class B(A). Какова наилучшая практика для "преобразования" объекта k в class B и сохранения всех данных в k?

4b9b3361

Ответ 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__)