post init call

Peter Otten __peter__ at web.de
Mon Jun 18 06:45:57 EDT 2012


Prashant wrote:
> class Shape(object):
> def __init__(self, shapename):
> self.shapename = shapename
>>> def update(self):
> print "update"
>> class ColoredShape(Shape):
> def __init__(self, color):
> Shape.__init__(self, color)
> self.color = color
> print 1
> print 2
> print 3
> self.update()
>> User can sub-class 'Shape' and create custom shapes. How ever user must
> call 'self.update()' as the last argument when ever he is sub-classing
> 'Shape'. I would like to know if it's possible to call 'self.update()'
> automatically after the __init__ of sub-class is done?

I don't think so. You could however shuffle things around a bit:
class Shape(object):
 def __init__(self, shapename, *args, **kw):
 self.shapename = shapename
 self.init(*args, **kw)
 self.update()
 def init(self, *args, **kw):
 pass
 def update(self):
 print "update"
In that constellation you would override init(), not __init__():
class ColoredShape(Shape):
 def init(self, color, **kw):
 self.color = color
 print 1
 print 2
 print 3


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /