On Fri, 31 Oct 2014 14:24:11 -0700 (PDT) sohcahto...@gmail.com wrote: > On Friday, October 31, 2014 1:51:23 PM UTC-7, Chris Angelico wrote: > > On Sat, Nov 1, 2014 at 4:43 AM, Rob Gaddi > > <rgaddi@technologyhighland.invalid> wrote: > > > Define a Square class, subclassed from Rectangle. Use getters/setters > > > to enforce that the length and width must be equal. Confirm that > > > length and width remain locked, and that perimeter() and area() work > > > correctly. > > > > Here we go again... > > > > http://en.wikipedia.org/wiki/Circle-ellipse_problem > > > > Square and Rectangle are just as "obviously" the other way around in > > the hierarchy, and it's wrong whichever way you do it. Not a good > > example. > > > > ChrisA > > I've never heard of the Circle-Ellipse problem, and my first instinct to > Rob's post was to ask, why would you want to sub-class Rectangle into a > Square class? A square is just a special case of a Rectangle. Attempting > that kind of sub-classing would just cause problems. The only thing you gain > is a slight optimization in calculating perimeter by turning two > multiplications and an addition into a single multiplication which really > wouldn't have an effect on performance unless you were doing that calculation > millions of times per second.
As a practical tool? Entirely and completely useless, no doubt about it. But it's easily understood as an example, even if the reason that a Square is a subclass of Rectangle is "because I said so". For this specific exercise, a Square is a subclass of Rectangle because the point of Rectangle is to demonstrate that extraneous get/set functions are completely unnecessary in Python. The point of Square is to demonstrate that get/set functions can be useful in certain circumstances where you need to implement non-trivial behaviors, such as making the "width" property into an alias for the "length" true data member. As a learning tool for thinking about inheritance hierarchies it's kind of rubbish. But then again, most inheritance hierarchies are ambigious at best, which is why "has a" is often a better choice than "is a". -- Rob Gaddi, Highland Technology -- www.highlandtechnology.com Email address domain is currently out of order. See above to fix. -- https://mail.python.org/mailman/listinfo/python-list