design question: no new attributes

greg greg at cosc.canterbury.ac.nz
Thu Mar 1 04:11:35 EST 2007


Alan Isaac wrote:

> class NothingNew:
>     a = 0
>     def __init__(self):
>         self.b = 1
>         self.initialized = True

There's a problem with that when you want to subclass:

   class NothingElseNew(NothingNew):

     def __init__(self):
       NothingNew.__init__(self)
       self.c = 42 # <--- Not allowed!

You could get around this by temporarily de-initializing
it, i.e.

     def __init__(self):
       NothingNew.__init__(self)
       del self.__dict__['initialized']
       self.c = 42
       self.initialized = True

but that's not very elegant.

--
Greg



More information about the Python-list mailing list