[Tutor] Property Question (Was: RE: Overloading assignment operator)

Carroll, Barry Barry.Carroll at psc.com
Fri Feb 9 03:07:40 CET 2007


> -----Original Message-----
> From: Tony Cappellini [mailto:cappy2112 at gmail.com]
> Sent: Thursday, February 08, 2007 5:41 PM
> To: Carroll, Barry
> Subject: re:Overloading assignment operator
> 
> Hello Barry
> 
> I'm trying to understand you post
> 
> my question is, should this line
> 
> result = property(get_result, set_result)
> 
> actually be
> 
> self.result = property(get_result, set_result)
> 
> if result is an instance variable?
> 
> Or did you intend it to be a class variable?
> 
> Properties always confused me.
> 
> 
> thanks
> 
> Overloading assignment operator
> Carroll, Barry Barry.Carroll at psc.com
> Wed Jan 24 00:32:34 CET 2007
> 
> Hello, Achim,
> 
> * ...here is where
> * properties become useful.  you can create a getter, setter, and even
a
> * deleter and doc string if you want. here's how you use it... add the
> * following to your class:
> 
> * def get_result(self):
> *     return self.__result
> *
> * def set_result (self, expression):
> *     self.__result = expression
> *
> * result = property(get_result, set_ result, doc='result of
operations')
> *
> * -----
> *
> 
> I have tested this using the admittedly simple-minded code snipped
> below.
> 
> >>>>>>>>>>
> @BCARROLL[Python]|3> class Aclass:
>                  |.>     def __init__(self):
>                  |.>         __result = None
>                  |.>     def get_result(self):
>                  |.>         return self.__result
>                  |.>     def set_result (self, result):
>                  |.>         self.__result = result
>                  |.>     result = property(get_result, set_result,
> doc='result of expression')
>                  |.>
> @BCARROLL[Python]|5> a = Aclass()
> @BCARROLL[Python]|7> a.result = 2*3
> @BCARROLL[Python]|8> a.result
>                  <8> 6
> @BCARROLL[Python]|9> a.result = 25.0 * 5.25
> @BCARROLL[Python]|10> a.result
>                  <10> 131.25
> @BCARROLL[Python]|11>
Hello, Tony:

First off, it's always a good idea to respond to the mailing list
instead of directly to an individual.  Everyone benefits from the
information instead of just one person.  Besides, if I make a mistake
(something I fo depressingly often) someone else on the list can correct
it so you get the right info.

Anyway, to your question: "result" vs "self.result".  Look at the
interpreter session snippet above.  The assignment to "result" is inside
the class definition, so it is an attribute of Aclass.  At this point
"Aclass.result" is indeed a class variable.  Or, perhaps more correctly,
a class property.  

However, when "a" is set to "Aclass()", an instance of Aclass is created
and given the name "a".  "a.result" is therefore an instance variable.
I never use the class variable "Aclass.result".  

Does that help any?

Regards,
 
Barry
barry.carroll at psc.com
541-302-1107
________________________
We who cut mere stones must always be envisioning cathedrals.

-Quarry worker's creed




More information about the Tutor mailing list