def get_getter(cls, prop_name,  # @NoSelf
                   user_getter=None, getter_takes_name=False):
        """Returns a function wich is a getter for a property.
        prop_name is the name off the property.

        user_getter is an optional function doing the work. If
        specified, that function will be called instead of getting
        the attribute whose name is in 'prop_name'.

        If user_getter is specified with a False value for
        getter_takes_name (default), than the method is used to get
        the value of the property. If True is specified for
        getter_takes_name, then the user_getter is called by
        passing the property name (i.e. it is considered a general
        method which receive the property name whose value has to
        be returned.)
        """
        if user_getter:
            if getter_takes_name:  # wraps the property name
                _deps = type(cls)._get_old_style_getter_deps(cls, prop_name,
                                                             user_getter)

                def _getter(self, deps=_deps):
                    return user_getter(self, prop_name)
            else:
                _getter = user_getter
            return _getter

        def _getter(self):  # @DuplicatedSignature
            return getattr(self, PROP_NAME % {'prop_name' : prop_name})
        return _getter
Returns a function wich is a getter for a property.
        prop_name is the name off the property.

        user_getter is an optional function doing the work. If
        specified, that function will be called instead of getting
        the attribute whose name is in 'prop_name'.

        If user_getter is specified with a False value for
        getter_takes_name (default), than the method is used to get
        the value of the property. If True is specified for
        getter_takes_name, then the user_getter is called by
        passing the property name (i.e. it is considered a general
        method which receive the property name whose value has to
        be returned.)