title: "Ask forgiveness not permission" - explain
body: <p>I'm not asking for personal "religious" opinions about this philosophy, rather something a bit more technical.</p>
  
  <p>I understand this phrase is one of several litmus tests to see if your code is "pythonic".  But to me, pythonic means clean, simple and intuitive, not loaded with exception handlers for bad coding.</p>
  
  <p>So, practical example.  I define a class:</p>
  
  <pre><code>class foo(object):
      bar = None
  
      def __init__(self):
          # a million lines of code
          self.bar = "Spike is my favorite vampire."
          # a million more lines of code
  </code></pre>
  
  <p>Now, coming from a procedural background, in another function I wanna do this:</p>
  
  <pre><code>if foo.bar:
      # do stuff
  </code></pre>
  
  <p>I'll get an attribute exception if I was impatient and <em>did not</em> do the initial foo = None.  So, "ask forgiveness not permission" suggests I should do this instead?</p>
  
  <pre><code>try:
      if foo.bar:
          # do stuff
  except:
      # this runs because my other code was sloppy?
  </code></pre>
  
  <p>Why would it be better for me to add additional logic in a try block just so I can leave my class definition <em>more ambiguous</em>?  Why not define everything initially, therfore explicitly <em>grant permission</em>?</p>
  
  <p>(Don't beat me up about using try/except blocks... I use them everywhere.  I just don't think it's right to use them to catch my own errors because I wasn't a thorough programmer.)</p>
  
  <p>Or... do I completely misunderstand the "Ask Forgivess" mantra?</p>