On Sat, Sep 5, 2009 at 12:04 PM, Andre Roberge <span dir="ltr">&lt;<a href="mailto:andre.roberge@gmail.com">andre.roberge@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Dear Kirby,<br><br>Many times on this list and elsewhere (<a href="http://mybizmo.blogspot.com/2006/08/python-pedagogy.html" target="_blank">http://mybizmo.blogspot.com/2006/08/python-pedagogy.html</a> and <a href="http://controlroom.blogspot.com/2006/09/lunch-on-hawthorne.html" target="_blank">http://controlroom.blogspot.com/2006/09/lunch-on-hawthorne.html</a>) you have written about Python&#39;s special methods as &quot;__ribs__&quot;.    While you have given many examples ... it is difficult to find a single definitive link that others could be directed to, to learn about this approach (with links to other examples...).<br>

<br>I think it would be very useful to all of us if you could come up with a &quot;reasonably complete&quot; single post (either on this list or on some other website) about __ribs__, starting from the beginning simple image, meandering in your own unique way to perhaps conclude with an example showing operator overloading (with fractions?) using Python&#39;s special methods.<br>

<br>André<br>
<br></blockquote><div><br>OK André, that&#39;s a reasonable request, let me attempt it in the short window I have available before retrieving Lindsey for another try at passing DEQ (should pass this time, thanks to recent visits to Nissan Nation)...<br>
<br>The idea of saying __ribs__ or __rib__ (singular) for Python&#39;s special names is a way to turn Python&#39;s signature appearance into easy mnemonics i.e. this will help kids (adults) learn.<br><br>class Python:<br>
   __rib__<br>   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
   __rib__<br>
<br>is not street legal Python, but damn close.  <br><br>A real Python class has __ribs__ like __init__, __add__, __repr__, __str__ and so forth.<br><br>The mnemonics here:  Pythons are snakes, have long backbones (the characteristic feature of snakes), lots (lots!) of ribs.  So the language Python, in addition to alluding to Monty Python, is very cleverly self referential in terms of classes (types) having a kind of snake-like structure, i.e. the methods stack up to for a &quot;rib cage&quot;.<br>
<br>Of course not all method names are special names.<br><br>Another use of ribs is in the ribs of a ship or whale.  There&#39;s the whole idea of &quot;container with guts&quot; i.e. the containership metaphor of dot notation is well supported by this view of a class as a kind of ship, also with __ribs__.  <br>
<br>The class definition is actually just the blueprint of a ship (or snake, or other creature) and then we have *instances* of that, i.e. the actual objects are the incarnated (built, constructed) thingies in memory.  Just talking basic OO here, nothing new, old hat.<br>
<br>Here&#39;s a picture from my notebooks that encourages these heuristics:<br><br><a href="http://www.flickr.com/photos/17157315@N00/sets/72157617152555758/">http://www.flickr.com/photos/17157315@N00/sets/72157617152555758/</a>  (upper left)<br>
<br>Of course in actual practice we&#39;re like building Biotum, Dog, Cat, Monkey, Human, then inheriting from Mammal (polymorphism) in preparation for more stark and austere &quot;math objects&quot; like Vector, Edge, Rational, Polynomial, Polyhedron.  <br>
<br>These latter may know to write themselves in scene description language (POV-ray) or x3d, other formats, per examples at Oregon Curriculum Network website (<a href="http://4dsolutions.net">4dsolutions.net</a> a private company sponsor).<br>
<br><a href="http://www.4dsolutions.net/ocn/stickworks.html">http://www.4dsolutions.net/ocn/stickworks.html</a>  (instructional video)<br><br>Kirby<br><br>PS:  some of the best graphics introducing the rib concept are in my Vilnius slides at <br>
<a href="http://www.4dsolutions.net/presentations/connectingthedots.pdf">http://www.4dsolutions.net/presentations/connectingthedots.pdf</a>  (slides 9 - 12 in particular)<br><br><br><br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">_______________________________________________<br>
Edu-sig mailing list<br>
<a href="mailto:Edu-sig@python.org">Edu-sig@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/edu-sig" target="_blank">http://mail.python.org/mailman/listinfo/edu-sig</a><br>
<br></blockquote></div><br>