Week 5 Properties

The three forms

Properties: What and Why?

1. Wrapper functions that controll access (get,set,delete) to an attribute.

2. Provides encapsulation

Properties First Form

Using decorators

class Form1( object ):
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self,value):
        self._name = value

    @name.deleter
    def name(self):
        del self._name

Properties Second Form

Using __builtins__.property

class Form2( object ):

    def __init__(self,name):
        self._name = name

    def get_name(self):
        return self._name

    def set_name(self,value):
        self._name = value

    def del_name(self):
        del self._name

    # NOTE where this is bound
    name = property( get_name, set_name, del_name )

Properties Third Form

Using magic methods __get__, __set__, and __delete__ ( use case )

class Name(object):
    def __init__(self,val):
        self.value = val

    def __get__(self, obj, objtype):
        return self.value

    def __set__(self, obj, val):
        self.value = val

    def __delete__(self,obj):
        del self.value