title: Python classes: method has same name as property
body: <p>I'm constructing a class, <em>Heating</em>. Every instance of this class has the property 'temperature'. It's mandatory that <em>Heating</em> also supports the method <em>temperature()</em> that prints the property 'temperature' as an integer.</p>
  <p>When I call the method temperature(), I get the error</p>
  <blockquote>
  <p>'int' object is not callable because self.temperature is already defined as an integer.</p>
  </blockquote>
  <p>How do I solve this?</p>
  <p>Code:</p>
  <pre><code>class Heating:
      &quot;&quot;&quot;
      &gt;&gt;&gt; machine1 = Heating('radiator kitchen', temperature=20)
      &gt;&gt;&gt; machine2 = Heating('radiator living', minimum=15, temperature=18)
      &gt;&gt;&gt; machine3 = Heating('radiator bathroom', temperature=22, minimum=18, maximum=28)
      &gt;&gt;&gt; print(machine1)
      radiator kitchen: current temperature: 20.0; allowed min: 0.0; allowed max: 100.0
      &gt;&gt;&gt; machine2
      Heating('radiator living', 18.0, 15.0, 100.0)
      &gt;&gt;&gt; machine2.changeTemperature(8)
      &gt;&gt;&gt; machine2.temperature()
      26.0
      &gt;&gt;&gt; machine3.changeTemperature(-5)
      &gt;&gt;&gt; machine3
      Heating('radiator bathroom', 18.0, 18.0, 28.0)
      &quot;&quot;&quot;
      def __init__(self, name, temperature = 10, minimum = 0, maximum = 100):
          self.name = name
          self.temperature = temperature
          self.minimum = minimum
          self.maximum = maximum
  
      def __str__(self):
          return '{0}: current temperature: {1:.1f}; allowed min: {2:.1f}; allowed max: {3:.1f}'.format(self.name, self.temperature, self.minimum, self.maximum)
  
      def __repr__(self):
          return 'Heating(\'{0}\', {1:.1f}, {2:.1f}, {3:.1f})'.format(self.name, self.temperature, self.minimum, self.maximum)
  
      def changeTemperature(self, increment):
          self.temperature += increment
  
          if self.temperature &lt; self.minimum:
              self.temperature = self.minimum
  
          if self.temperature &gt; self.maximum:
              self.temperature = self.maximum
  
      def temperature(self):
          return self.temperature
  
  
  # Test of the program
  if __name__ == '__main__':
      import doctest
      doctest.testmod()
  </code></pre>