<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Apr 22, 2014 at 10:37 AM, Lucas Malor <span dir="ltr"><<a href="mailto:7vsfeu4pxg@snkmail.com" target="_blank">7vsfeu4pxg@snkmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">switch tarot case 0:<br>
    card = "Fool"<br>
</div><div class="">case 1:<br>
    card = "Alan Moore"<br>
</div><div class="">case 2:<br>
    card = "High Priestess"<br>
<etc....><br></div></blockquote><div><br></div><div>-100.</div><div><br></div><div>I have to say "yuck" to this sort of thing; it feels entirely unpythonic. Each 'case' is some sort of comparison, but you can't tell locally what is being compared.  Of course in the simple one-line blocks it's easy enough to glance up to the 'switch', but if you had 20-30 lines of code within each 'case' you could look at 'case 20' and not remember/know what is being switched on.</div>
<div><br></div><div>Using the Case class idea seems much more clear, as well as being much more flexible.  It's true the initialization of the instance might be a ways up, but at least you know that it's an argument passed to a callable, so you already *know*  that you'd have to look at the creation of that callable.  Moreover, being generalizable is nice, e.g. (with a slightly enhanced class, implementation left to the reader):</div>
<div><br></div><div>    case = Case(my_color(some_complex_expression(this, that, other) + more_stuff(foo, bar))</div><div>    if case('red'):</div><div>        some_red_stuff()</div><div>    elif <a href="http://case.in">case.in</a>('green', 'blue'):</div>
<div>        some_bluegreen_stuff()</div><div>    elif '#00AAAA' < case < '#EEBBAA':  # some definition of color range</div><div>        something_with_color_range()</div><div>    else:</div><div>        paint_it_black()</div>
<div><br></div><div>Of course, in my example, maybe a better name for the 'case' instance is actually 'color'.  The fact I can choose a name that fits the context adds even more clarity over all "cases" needing to be named 'case'.</div>
<div> </div></div><br clear="all"><div><br></div>-- <br>Keeping medicines from the bloodstreams of the sick; food <br>from the bellies of the hungry; books from the hands of the <br>uneducated; technology from the underdeveloped; and putting <br>
advocates of freedom in prisons.  Intellectual property is<br>to the 21st century what the slave trade was to the 16th.<br>
</div></div>