[Python-ideas] Required to call superclass __init__

Scott Dial scott+python-ideas at scottdial.com
Thu Nov 15 09:14:25 CET 2007


Jim Jewett wrote:
> I don't yet
> see what those simplifications should actually be, but maybe someone
> else will if you publish and wait long enough.
> 

The first thing I noticed was that the naming scheme is confusing. 
Between required_super and super_required, neither of them indicate to 
me which is the function decorator and which is the base class. 
Furthermore, I don't see why required_super (the base class) needs a 
distinct name. Perhaps I am being a bit to clever, but couldn't we just 
overload the __new__ method of the base class.

def _super_required(func):
     ...

class super_required(object):
     ...
     def __new__(cls, *func):
         if len(func) > 0:
             return _super_required(*func)
         return object.__new__(cls)

Leaving your example now being spelled as:

class A(super_required):
     @super_required
     def __init__(self):
         pass

I can't think of a case that the the base class would ever be passed 
arguments, so this seems ok and rids us of the naming oddities.

-Scott

-- 
Scott Dial
scott at scottdial.com
scodial at cs.indiana.edu



More information about the Python-ideas mailing list