List Info

Thread: Re: Accessing class attributes: use methods only?




Re: Accessing class attributes: use methods only?
country flaguser name
United States
2007-02-14 12:01:14
Dave Kuhlman wrote:

> Some of us old school types feel that properties are
non-Pythonic. 
> They are a way to write code that does something that
it does not
> look like that code is doing.  It hides your intend. 
So, it is not
> explicit.
> 
>     "Explicit is better than implicit."
>                    - Tim Peters
>                      (see http://www.p
ython.org/dev/peps/pep-0020/)
> 
> In other words, properties are a way of writing code
that appears
> harmless, for example:
> 
>     temp = weather.temperature
> 
> and:
> 
>     weather.temperature = temp
> 
> but making it do arbitrary, sneaky, gratuitous, and
egregious things.

And this is different how from what is available without
properties? 
__setattr__ and __getattr__ hooks have been available at
least since 
Python 1.4. New-style classes add __getattribute__. All of
these exist 
so you can make attribute access do useful things, or if you
want, 
arbitrary, sneaky, gratuitous, and egregious things.

Functions *are* descriptors (the underlying mechanism behind
properties) 
since Python 2.2. The magic that makes bound and unbound
methods is in 
the __get__() method of the function. When you invoke 
weather.getTemperature() you are essentially invoking a
property to get 
the getTemperature() method. Which is pretty sneaky 

Of course you can also change the meaning of a + b, c[1],
etc if you like.

Because it is highly dynamic and exposes much of its
internal 
mechanisms, Python gives the programmer great latitude to do
stupid 
things in a wide variety of ways. This is generally
considered a feature.

Kent

_______________________________________________
Tutor maillist  -  Tutorpython.org
http://
mail.python.org/mailman/listinfo/tutor

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )