classmethod() not inherited?

Jack Diederich jack at performancedrivers.com
Thu Jan 16 04:43:35 EST 2003


How is it possible to have classmethods still be
classmethods in their kids?

-- file Test.py --
class Base(object):
  def foo(cls):
    return 'BASE!'
  foo = classmethod(foo)

class A(Base):
  def foo(cls):
    return 'some value'

class B(Base):
  def foo(cls):
    return 'some other value'

class Z(Base):
  def foo(cls):
    return 'something else still'

I'd like to have ALL of the derivitives of Base
have foo as a classmethod, but it doesn't seem
to be automatic and the following doesn't work

import Test

for (Test.A .. Test.Z): # pseudo code
  Test.A.foo = classmethod(Test.A.foo)

The Base class might have several classmethods
so adding all of them to each of the derivitives
is an error prone cut-n-paste nightmare.

google groups turns up lots of convos about type()
and new style classes, but I couldn't find anything
for this in particular.  [I'm Running Python 2.2.1]

hating cut-n-paste-ly yours,

-jackdied





More information about the Python-list mailing list