Extending classes __init__behavior for newbies
MRAB
python at mrabarnett.plus.com
Sun Feb 13 17:21:56 EST 2011
More information about the Python-list mailing list
Sun Feb 13 17:21:56 EST 2011
- Previous message (by thread): Extending classes __init__behavior for newbies
- Next message (by thread): Extending classes __init__behavior for newbies
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 13/02/2011 22:00, James Mills wrote: > On Mon, Feb 14, 2011 at 7:17 AM, Benjamin J. Racine > <bjracine at glosten.com> wrote: >> I don't quite understand the interplay of the two different __init__ methods >> when trying to extend a class. Below is my hack attempt at doing so... >> class ship(object): >> def __init__(self,l=0,b=0,t=0,name=''): >> self.l = l >> self.b = b >> self.t = t >> self.name = name >> def make_it_deeper(self,t): >> self.t = self.t - t >> class fast_ship(ship): >> def __init__(self,speed = 0): >> self.speed = speed >> my_ship = fast_ship(l = 100,b = 50, t = 10, name = 'cutter',speed = 10) >> >> If anyone would be so kind as to show me how to get the intended effect that >> I've hinted at, I would be most grateful, > > When you subclass a base class (ship in your example) you need > to call it's parent (or super) methods. This includes the constructor > (__init__). > > The standard way of doing this in Python is: > > class FasterShip(Ship): > > def __init__(self, l=0,b=0,t=0,name='', speed=0): > super(FasterShip, self).__init__(l, b, t, name) > > self.speed = speed > > This ensures that the constructor of the base class (Ship) gets called > and the object initialized with the attributes you've defined. > > Note for convention reasons I've also included proper class names > in the example. Classes normally start with an Upper case letter. > I would've done it this way: class FasterShip(Ship): def __init__(self, speed=0, **kwargs): Ship.__init__(self, **kwargs) self.speed = speed
- Previous message (by thread): Extending classes __init__behavior for newbies
- Next message (by thread): Extending classes __init__behavior for newbies
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list