Accessors in Python (getters and setters)
Bruno Desthuilliers
onurb at xiludom.gro
Thu Jul 13 06:32:40 EDT 2006
mystilleef wrote:
> Bruno Desthuilliers wrote:
>
>>mystilleef wrote:
>>(snip)
>>
>>>Python doesn't have any philosophy with regards to naming identifiers.
>>
>>Yes it does.
>
>
> No it doesn't.
>
>
>>>>But they are in Python and that is the python's philosophy. All attribute or
>>>>method not beginning with an '_' *is* API.
>>>
>>>Right, and what if I want to change a private API to a public one.
>>
>>Then you provide a public API on top of the private one.
>>
>>class MyClass(object):
>> def __init__(self, ...):
>> self._attr = XXX
>>
>> # seems like we really have enough use
>> # cases to justify exposing _imp_attr
>> @apply
>> def attr():
>> def fget(self):
>> return self._attr
>> def fset(self):
>> self._attr = attr
>> return property(**locals())
>>
>>
>> def _method(self, ...):
>> # code here
>>
>> # seems like we really have enough use
>> # cases to justify exposing _imp_method
>> method = _impmethod
>>
>>Note that none of this actually breaks encapsulation.
>
>
> Ha! Just as bad as getters and setter.
What point are you trying to make here ? Of course a computed attribute
is just syntactic sugar for getters and setters - what else could it be?
The difference is that you don't need to write explicit getters/setters
beforehand, nor to use a "behaviour" semantic.
>
>>>How
>>>does that solve my naming issues.
>>
>>How could this solve *your* naming issue ? This is totally unrelated.
>>You choose a bad name for a *public* symbol.
>
>
> My point exactly! It doesn't solve my problem!
What do you hope ? Something that cures cancer ? Please enlighten us and
explain how explicit getters/setters would have solved the problem of
badly named getters/setters ?
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"
More information about the Python-list
mailing list