title: Getter with side effect
body: <p>I create a class whose objects are initialized with
  a bunch of XML code. The class has the ability to extract various parameters out of that XML and to cache them inside the object state variables. The potential amount of these parameters is large and most probably, the user will not need most of them. That is why I have decided to perform a "lazy" initialization. </p>
  
  <p>In the following test case such a parameter is <code>title</code>. When the user tries to access it for the first time, the getter function  parses the XML, properly initializes the state variable and return its value:</p>
  
  <pre><code>class MyClass(object):     
      def __init__(self, xml=None):
          self.xml  = xml
          self.title = None
  
      def get_title(self):
          if self.__title is None:
              self.__title = self.__title_from_xml()
          return self.__title
  
      def set_title(self, value):
          self.__title = value
  
      title = property(get_title, set_title, None, "Citation title")
  
      def __title_from_xml(self):
          #parse the XML and return the title
          return title         
  </code></pre>
  
  <p>This looks nice and works fine for me. However, I am disturbed a little bit by the fact that the getter function is actually a "setter" one in the sense that it has a very significant side effect on the object. Is this a legitimate concern? If so, how should I address it?</p>