On 04/29/2015 10:16 AM, Grant Edwards wrote:
On 2015-04-28, Cecil Westerhof <ce...@decebal.nl> wrote:
If I remember correctly you can not hide variables of a class or make
them read-only?

I want to rewrite my moving average to python. The init is:
     def __init__(self, length):
         if type(length) != int:
             raise ParameterError, 'Parameter has to be an int'
         if n < 0:
             raise ValueError, 'Parameter should be greater or equal 2'
         self.length             = length
         self.old_values         = []
         self.current_total      = 0

But when someone changes length, old_values, or current_total that
would wreck havoc with my class instance. What is the best way to
handle this?

It's like the punchline to the old doctor joke: if it hurts when you
do that, then don't _do_ that:

   def __init__(self, length):
       if type(length) != int:

Better:  if isinstance(length, int):

           raise ParameterError, 'Parameter has to be an int'
       if n < 0:

Better:   if length < 0:          (since n is undefined)

           raise ValueError, 'Parameter should be greater or equal 2'
       self._length             = length
       self._old_values         = []
       self._current_total      = 0

The convention is that properties that start with underscores are
private.  They're not hidden, but if people touch them and it breaks
something, it's their fault.  Whether you go all Torvalds on their ass
for doing so is left as an exercise for the reader.



--
DaveA
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to