Приведение к другому классу в Python - PullRequest
2 голосов
/ 23 мая 2011

У меня есть код (упрощенный):

class A(object):
    attrib1 = "a"
    attrib2 = "b"

class B(A):
    flag = True

В каком-то месте моего кода у меня есть экземпляр A, но мне нужно создать экземпляр класса B, в котором будут все данные из экземпляра A ... Я чувствую себя глупо, но я не не хочу делать что-то вроде:

class B(A):
    def __init__(self,a1,a2,a3,a4,..):
        self.a1 = a1
        self.a2 = a2

и звоните как:

obj_b = B( obj_a.a1, obj_a.a2,...)

Ответы [ 2 ]

4 голосов
/ 23 мая 2011
class B(A):
    def __init__(self, obj):
        self.__dict__.update(obj.__dict__)
1 голос
/ 23 мая 2011

Другой вариант - изменить переменную __class__ в вашем экземпляре A.

a = A()
a.__class__ = B
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...