[CentralOH] __metaclass__

Mark Erbaugh mark at microenh.com
Fri Jun 27 02:31:37 CEST 2008


On Thu, 2008-06-26 at 12:31 -0400, Steven Huwig wrote:
> I tried to replicate this on my 2.5.2 install and was unable to do it.
> Do you have a minimum failing example?


I figured it out.  The problem was with the metaclass.  I designed the
base class (Query) to be sub-classed. I didn't want the metaclass to do
anything to the base class, just to sub-classes, so the metaclass's
__init__ starts:

    def __init__(cls, name, t, d):
        if name <> 'Query':

Thus the stuff that I wanted to happen wasn't happening if the sub-class
was also named 'Query'.

So I changed the code:

    def __init__(cls, name, t, d):
        # if name <> 'Query':
        if cls.__base__ <> object:

I originally tried
	if cls <> Query:

But Python complained about unknown Query. Query was declared later in
the same file.  I tried swapping Query and the metaclass, but then I got
complaints about the metaclass being unkown in the definition of Query:


Mark
	




More information about the CentralOH mailing list