Mutate an object into an instance of one its subclasses

Posted by Gohu on Stack Overflow See other posts from Stack Overflow or by Gohu
Published on 2010-05-22T09:54:24Z Indexed on 2010/05/22 10:00 UTC
Read the original article Hit count: 115

Filed under:
|

Hi,
Is it possible to mutate an object into an instance of a derived class of the initial's object class? Something like:

class Base():
    def __init__(self):
        self.a = 1

    def mutate(self):
        self = Derived()

class Derived(Base):
    def __init__(self):
        self.b = 2

But that doesn't work.

>>> obj = Base()
>>> obj.mutate()
>>> obj.a
1
>>> obj.b
AttributeError...

If this isn't possible, how should I do otherwise?
My problem is the following: My Base class is like a "summary", and the Derived class is the "whole thing". Of course getting the "whole thing" is a bit expensive so working on summaries as long as it is possible is the point of having these two classes. But you should be able to get it if you want, and then there's no point in having the summary anymore, so every reference to the summary should now be (or contain, at least) the whole thing. I guess I would have to create a class that can hold both, right?

class Thing():
    def __init__(self):
        self.summary = Summary()
        self.whole = None

    def get_whole_thing(self):
        self.whole = Whole()

© Stack Overflow or respective owner

Related posts about python

Related posts about oop