Can you create an instance of a subclass with an existing instance of the base class?
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Mon Apr 24 21:23:16 EDT 2006
Sandra-24 a écrit :
> Lawrence D'Oliveiro wrote:
>
>>In article <1145736124.831082.34550 at v46g2000cwv.googlegroups.com>,
>> "Sandra-24" <sandravandale at yahoo.com> wrote:
>>
>>
>>>Now that is a clever little trick. I never would have guessed you can
>>>assign to __class__, Python always surprises me in it's sheer
>>>flexibility.
>>
>>That's because you're still thinking in OO terms.
>
> It's not quite as simple as all that. I agree that people, escpecially
> people with a Java (ew) background overuse OO, when there's often
> simpler ways of doing things.
Nope. I mean : they don't overuse OO, they overuse *classes*. AFAIK, OO
means *object* oriented - not class oriented. There are OO languages
that don't even have a notion of class.
> However in this case I'm simply getting an object (an mp_request object
> from mod_python) passed into my function, and before I pass it on to
> the functions that make up and individual web page it is modified by
> adding members and methods to add functionality.
Which is a well-known design pattern called "decorator".
(snip)
> Sadly I'm unable to create it as a python object first, because it's
> created by the time my code comes into play. So I have to resort to
> using the new module to add methods.
This is OK IMHO.
> It works, but it has to be redone for every request,
Is this really a problem ?
> I thought moving
> the extra functionality to another object would simplify the task.
>
> A
> better way might be to contain the mp_request within another object and
> use __getattr__ to lazily copy the inner object. I'd probably have to
> first copy those few fields that are not read-only or use __setattr__
> as well.
Why copy ? You could as well just use composition/delegation (also using
__getattr__ - and BTW, this is another possible implementation of the
decorator pattern).
More information about the Python-list
mailing list