Metaclasses are not called in subclasses. What did I wrong?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Létezõ

    #1

    Metaclasses are not called in subclasses. What did I wrong?

    I use Python 2.4.4. Please read the code below:

    -----------------------------------------------------------
    from new import classobj

    def mymeta(name,bas es,clsdict):
    print 'meta: %s'%name
    return classobj(name,b ases,clsdict)

    class A(object):
    __metaclass__=m ymeta

    class B(A):
    pass

    -----------------------------------------------------------

    This should print

    meta: A
    meta: B

    when classes A and B are created. But only meta: B is missing,
    since mymeta() is not called when class B is created.

    Related python documentation states that mymeta() must be called when B is
    created, since metaclasses are looked up in bases classes if not found in
    the dictionary of the class itself.
    >From Python 2.4.4's manual: "Otherwise, if there is at least one base class,
    its metaclass is used (this looks for a __class__ attribute first and if not
    found, uses its type)."

    Thanks for your help.

    Viktor

Working...