On 30Sep2017 20:07, Bill <bill_nos...@whoknows.net> wrote:
think all of this would have made a bit more sense (to me), if instead of just "@property", the syntax was "@property.getter".

Perhaps, but nobody wants to type this. Also many properties are ready only, so that is the default.

Now I am forced to ask the question, why did they use the underscore (on temperature) in the example on the bottom of this page? Is one forced to introduce new identifiers in order to define a setter?
https://www.programiz.com/python-programming/property

 class Celsius:
  def __init__(self, temperature = 0):
      self._temperature = temperature
  [...snip...]
  @property
  def temperature(self):
      print("Getting value")
      return self._temperature
  @temperature.setter
  def temperature(self, value):
      if value < -273:
          raise ValueError("Temperat
      print("Setting value")
      self._temperature = value

because the name self.temperature is taken by the property, one must store underlying values in a different name. Since the property is one to one with the actual internal value here and they're just using the setter protery to do a sanity check, they named the internal value very similarly. By using "_temperature" they (a) keep the name very similar and (b) make it clear that the internal value is "private", not intended for direct use by code outside the class.

Cheers,
Cameron Simpson <c...@cskk.id.au> (formerly c...@zip.com.au)
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to