title: String that is initialized lazily in Python
body: <p>I figured out that with deriving from <code>str</code> and overwriting <code>__new__</code> you can overwrite strings. Do you know any magic that would create a lazily initialized string?
  Therefore</p>
  
  <pre><code>def f(a, b):
      print("f called")
      return a+b
  
  s=f("a", "b")
  print("Starting")
  print(s)
  </code></pre>
  
  <p>how can I add a decorator to the function <code>f</code> such that this function is executed only <em>after</em> "Starting" was printed (basically on first access)? Seems tricky... :)</p>
  
  <p>I can do it when objects are returned, because there I intercept attribute access. However, string doesn't use attribute access?</p>