Re: [Cheetahtemplate-discuss] Overriding awake() not working
Brought to you by:
rtyler,
tavis_rudd
From: Edmund L. <el...@in...> - 2002-04-07 22:41:03
|
Mike wrote: >I don't thing switching to 2.2 will solve the awake() problem. >A class instantiation will call one __init__() method--the first one >it finds. You have to call the others. Likewise, when Webware >calls .awake(), it will take the first .awake() it finds--you have >to call the superclass'. The problem was not that the superclass >awake was caught on the wrong side of a diamond, I don't think. It sure looks like this... After all, the Cheetah servlet's class def is of the form: class ClassName(SiteTemplate, MixInClass): Which will mean that any awake() method in classes after the first one are never called. Just to confirm this, I just instantiated the Cheetah servlet at the Python command line and tried to call awake(). The interpreter tried to invoke the awake method in Cheetah.Servlet, not the version in the mix-in. I'll bet that if I were to install Python 2.2, the new inheritance resolution algorithm would correctly resolve to the mix-in's awake method. ...Edmund. |