On Sat, Oct 15, 2011 at 12:09 AM, Jason Swails <jason.swa...@gmail.com> wrote: <snip> > For instance, let's say you want to deal with shapes. You can define a > shape via a class > > class Shape(object): > """ Base shape class """ <snip> > Now we get into inheritance. Let's suppose that we want a specific type of > shape. For instance, a circle (that is defined by an infinite number of > vertices). In this case, a circle is still a shape, so it should have every > attribute that a normal shape has. Thus, we can define a circle class as > follows: > > class Circle(Shape): > """ Circle inherits from Shape """ > number_vertex_points = 1000 # Default number of vertex points I want to > define a circle > def __init__(self, center, radius): > """ Define the self.vertices here to trace out a circle as closely as > you want """ > > Now, each time we instantiate a Circle class, that class has every attribute > that Shape has, in addition to any additional attribute you give to Circle > (and if the same attribute is defined in both places, the definition in > Circle overrides that definition). Thus, in this case we can define a > Circle with a center and radius (much easier than vertices!), and we can > tell Circle how we want the vertices defined to get as close an > approximation to a circle as we want.
Sidenote: It's funny that the shapes example gets used so often, despite the fact that pursuing it much further so easily leads to the Circle-Ellipse / Rectangle-Square problem. Cheers, Chris -- http://mail.python.org/mailman/listinfo/python-list