Hello,

There's something I don't understand about descriptors. On a StackOverflow 
discussion 
(http://stackoverflow.com/questions/12846116/python-descriptor-vs-property) one 
of the answers provides the following descriptors example:

class Celsius( object ):
    def __init__( self, value=0.0 ):
        self.value= float(value)
    def __get__( self, instance, owner ):
        return self.value
    def __set__( self, instance, value ):
        self.value= float(value)

class Temperature( object ):
    celsius= Celsius()
    farenheit= Farenheit()

... and then gets chided in the comments:

"I believe your descriptor implementation of celsius is not correct. You should 
have set the celsius on instance rather than self; If you create two 
Temperature objects they will share the same celsius value."

Overall, I have two problems:
1) I don't get the idea behind the 'instance' and 'owner' parameters at all. Is 
there some simple tutorial that can explain these?
2) I don't understand the motivation behind the comment. Of course declaring a 
class variable would cause celcius to be the same for all objects. Shouldn't we 
be instead using self.celcius in, say, __init__() and then everything will work 
fine?

I have seen examples 
(http://programeveryday.com/post/an-introduction-to-python-descriptors/) where 
"instance" is used as keys of a dictionary, but given my argument above, isn't 
this approach an overkill?

Regards,
Ankush Thakur
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to