is python Object oriented??
Bruno Desthuilliers
bruno.42.desthuilliers at websiteburo.invalid
Wed Feb 4 04:05:22 EST 2009
Gabriel Genellina a écrit :
> En Mon, 02 Feb 2009 19:51:11 -0200, Russ P. <Russ.Paielli at gmail.com>
> escribió:
>
>> Suppose a library developer (or a module developer on a large team)
>> uses leading underscores. Now suppose that, for whatever reason
>> (pressure from the users, perhaps), the library developer decides to
>> change a "private" attribute to public. Now all occurrences of the
>> identifier need to be changed. If an assignment to the previously
>> "private" attribute is missed, no warning will be issued (because
>> Python allows new attributes to be added anywhere, even completely
>> outside the class definition itself). And if the library is widely
>> used, the probability of such bugs occurring is very high.
>
> So _foo becomes foo. Then:
>
> class X(object):
> def get_foo(self): return self._foo
> def set_foo(self, value): self._foo = value
> foo = property(get_foo, set_foo)
FWIW, if there's no other need for the property, I'd do it the other way
round : directly make foo a plain attribute, and add a _foo property
whose accessors would raise a deprecation warning. Then there's no
chance I miss a an assignement to _foo !-)
More information about the Python-list
mailing list