Steven Bethard wrote: > Andrew Jaffe wrote: > > I'm not sure if I understand your goal here, but you can get different > behavior using super(). > > py> class sup(object): > ... cvar1 = None > ... cvar2 = None > ... @classmethod > ... def setcvar1(cls, val): > ... cls.cvar1 = val > ... @classmethod > ... def setcvar2(cls, val): > ... cls.cvar2 = val > ... @classmethod > ... def printcvars(cls): > ... print cls.cvar1, cls.cvar2 > ... > py> class sub(sup): > ... cvar1a = None > ... @classmethod > ... def setcvar1(cls, val, vala): > ... cls.cvar1a = vala > ... super(sub, cls).setcvar1(val) > ... @classmethod > ... def printcvars(cls): > ... print cls.cvar1a > ... super(sub, cls).printcvars() > ... > py> sub.setcvar1(1, 10); sub.setcvar2(2); sub.printcvars() > 10 > 1 2 > py> sup.printcvars() > None None
Aha! This is the behavior I want -- the variables get set correctly when the methods are called on the subclass. I thought super() might be the right idea, but I didn't realize you could call it as super(sub, cls) rather than with an instance in the second slot. I don't think my use case ever needs the superclass to have the variables accessible as in your next ideas, not reproduced here. Thanks! Andrew -- http://mail.python.org/mailman/listinfo/python-list