What's the pythonic way to use getters and setters?

Jorge Guberte picture Jorge Guberte · Apr 13, 2010 · Viewed 259.8k times · Source

I'm doing it like:

def set_property(property,value):  
def get_property(property):  

or

object.property = value  
value = object.property

I'm new to Python, so i'm still exploring the syntax, and i'd like some advice on doing this.

Answer

Grissiom picture Grissiom · Apr 13, 2010

Try this: Python Property

The sample code is:

class C(object):
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        print("getter of x called")
        return self._x

    @x.setter
    def x(self, value):
        print("setter of x called")
        self._x = value

    @x.deleter
    def x(self):
        print("deleter of x called")
        del self._x


c = C()
c.x = 'foo'  # setter called
foo = c.x    # getter called
del c.x      # deleter called