Hi,

I am just reading about properties in Python. I am thinking
of this as an indirection mechanism, is that wrong? If so, how
come the getter/setters aren't called when I use properties
instead of the functions directly?

What am I missing here? I have a feeling I am overlooking
something simple here...

Thanks,
Esmail

---
#!/usr/bin/env python

#
# quick test to deal with 'private' attributes and
# python properties ...
#

import sys

class Rectangle(object):

    def __init__(self):
        self.__width = 0
        self.__height = 0


    def setSize(self, width, height):
        print 'in setter'
        if (width < 0) or (height < 0):
            print >> sys.stderr, 'Negative values not allowed'
        else:
            self.__width = width
            self.__height = height


    def getSize(self):
        print 'in getter'
        return self.__width, self.__height


    size = property(getSize, setSize)

r = Rectangle()
print r.getSize()
r.setSize(-40, 30)
print r.getSize()

print '-----------------'
size = 3, 7
print size

print '-----------------'
size = -3,7
print size



The program output:


in getter
(0, 0)
in setter
Negative values not allowed
in getter
(0, 0)
-----------------
(3, 7)
-----------------
(-3, 7)

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to