Not possible to hide local variables
Dave Angel
davea at davea.name
Wed Apr 29 22:31:13 EDT 2015
On 04/29/2015 10:16 AM, Grant Edwards wrote:
> On 2015-04-28, Cecil Westerhof <Cecil at 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
More information about the Python-list
mailing list