<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 20, 2016 at 9:45 PM, kirby urner <span dir="ltr"><<a href="mailto:kirby.urner@gmail.com" target="_blank">kirby.urner@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><pre> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-nd">@area</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-o">.</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-n">setter</span>
<span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-k">def</span> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-nf">area</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-p">(</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-bp">self</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-p">,</span> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-n">value</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-p">):</span>
<span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-bp">self</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-o">.</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-n">_area</span> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-o">=</span> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-n">value</span>
<span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-bp">self</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-o">.</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-n">_radius</span> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-o">=</span> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-bp">self</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-o">.</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-n">area</span> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-o">/</span> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-p">(</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-mi">2</span> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-o">*</span> <span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-n">math</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-o">.</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-n">pi</span><span class="gmail-m_-8126410808239270772gmail-m_5303367859606864588gmail-m_5529384974308578887gmail-p">)</span>
</pre></div></div></blockquote><div><br></div><div>Uh oh... I'm in the middle of teaching Session 10</div><div>and couldn't figure out why my radius for a smaller</div><div>area was bigger. Couldn't be. I did my algebra </div><div>wrong, duh. </div></div></div></div></blockquote><div><br></div><div><br></div><div><a href="https://docs.python.org/2/library/unittest.html">https://docs.python.org/2/library/unittest.html</a><br></div><div><br></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_extra"><div class="gmail_quote"><div>if __name__ == "__main__":</div></div></div><div class="gmail_extra"><div class="gmail_quote"><div> # import unittest</div></div></div><div class="gmail_extra"><div class="gmail_quote"><div> unittest.main()</div></div></div></blockquote><div class="gmail_extra"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Here's the debugged version:</div><div><br></div><div><div># -*- coding: utf-8 -*-</div><div>"""</div><div>Created on Thu Oct 20 15:43:14 2016</div><div><br></div><div>@author: Kirby Urner</div><div><br></div><div>toggle the import model_property on and off to see</div><div>the example works the same either way. model_property</div><div>contains a pure Python emulator of the built in </div><div>property type.</div><div><br></div><div>Related reading:</div><div><a href="https://mail.python.org/pipermail/edu-sig/2016-October/011548.html" target="_blank">https://mail.python.org/<wbr>pipermail/edu-sig/2016-<wbr>October/011548.html</a></div><div>"""</div><div><br></div><div>from model_property import Property as property</div><div>import math</div><div><br></div><div>class Circle:</div><div> """setting either the radius or area attribute sets the other</div><div> as a dependent value. Initialized with radius only, unit </div><div> circle by default.</div><div> """</div><div> </div><div> def __init__(self, radius = 1):</div><div> self.radius = radius</div><div> </div><div> @property</div><div> def area(self):</div><div> return self._area</div><div> </div><div> @property</div><div> def radius(self):</div><div> return self._radius</div><div> </div><div> @area.setter</div><div> def area(self, value):</div><div> self._area = value</div><div> self._radius = math.sqrt(self._area / math.pi) #duh</div><div> </div><div> @radius.setter</div><div> def radius(self, value):</div><div> self._radius = value</div><div> self._area = math.pi * (self._radius ** 2)</div><div> </div><div> def __repr__(self):</div><div> return "Circle(radius = {})".format(self.radius)</div><div> </div><div>the_circle = Circle(5)</div><div>print("the_circle:", the_circle)</div><div>print("Area: ", the_circle.area)</div><div>the_circle.area = 50</div><div>print("Radius when Area=50:", the_circle.radius)</div></div></div></div></div>
<br>______________________________<wbr>_________________<br>
Edu-sig mailing list<br>
<a href="mailto:Edu-sig@python.org">Edu-sig@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/edu-sig" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/edu-sig</a><br>
<br></blockquote></div><br></div></div>