|
From: Bruce S. <Bru...@nc...> - 2011-03-03 05:17:09
|
I haven't used decorators myself, and because Visual was initiated in
2000, there aren't any decorators anywhere in the Python portions of
Visual. So I'm tone-deaf to the issue here and don't understand what
advantage would accrue either to developers of Visual or users of
Visual by replacing the following code (currently found in
vis/primitives.py)
def set_color(self, color):
self.extrusion.color = color
def get_color(self):
return self.__color
color = property( get_color, set_color, None)
with
@color.setter
def set_color(self, color):
self.extrusion.color = color
@property
def get_color(self):
return self.__color
What am I missing? If I were to change this tiny piece of code to use
decorators, for consistency it would seem advisable to change all such
code segments, and I have no idea why this is advisable. Calling the
older scheme "unpythonic" doesn't help me see the light.
Bruce Sherwood
On Tue, Mar 1, 2011 at 11:11 PM, Guy K. Kloss <guy...@au...> wrote:
> On Wed, 02 Mar 2011 06:45:04 Bruce Sherwood wrote:
>> In vis/primitives.py, the code for
>> changing color and material for a text object should look like this:
>>
>> def set_material(self, material):
>> self.extrusion.material = material
>> def get_material(self):
>> return self.__material
>>
>> def set_color(self, color):
>> self.extrusion.color = color
>> def get_color(self):
>> return self.__color
>
> Are you *really* sure about that? Python usually does not use the concept of
> getters and setters. This turns out to be *very* unpythonic. I'd rather
> suggest the following:
>
> @material.setter
> def material(self, material):
> self.extrusion.material = material
>
> @property
> def material(self):
> return self.__material
>
> @color.setter
> def set_color(self, color):
> self.extrusion.color = color
>
> @property
> def get_color(self):
> return self.__color
>
> This exposes the given methods to transparently handle access (setting and
> getting) to mock attributes as they would be normally used within Python
> classes. It makes a nice API that is idiomatically consistent to use for a
> Pythoneer.
>
> For further reference on how to use the property() built-in, particularly in
> the way of decorators, have a look here:
>
> http://docs.python.org/library/functions.html#property
>
> Guy
>
> --
> Guy K. Kloss
> School of Computing + Mathematical Sciences
> Auckland University of Technology
> Private Bag 92006, Auckland 1142
> phone: +64 9 921 9999 ext. 5032
> eMail: Guy...@au...
>
> ------------------------------------------------------------------------------
> Free Software Download: Index, Search & Analyze Logs and other IT data in
> Real-Time with Splunk. Collect, index and harness all the fast moving IT data
> generated by your applications, servers and devices whether physical, virtual
> or in the cloud. Deliver compliance at lower cost and gain new business
> insights. http://p.sf.net/sfu/splunk-dev2dev
> _______________________________________________
> Visualpython-users mailing list
> Vis...@li...
> https://lists.sourceforge.net/lists/listinfo/visualpython-users
>
>
|