def __init__(self, field, name=None, value=None):
        """
        :param field: The property field in the class (can't be None nor empty)
        :param name: The property name (if None, this will be the field name)
        :param value: The property value (None by default)
        :raise TypeError: Invalid argument type
        :raise ValueError: If the name or the name is None or empty
        """
        # Field validity test
        if not is_string(field):
            raise TypeError("Field name must be a string")

        field = field.strip()
        if not field or " " in field:
            raise ValueError(
                "Empty or invalid property field name '{0}'".format(field)
            )

        # Name validity test
        if name is not None:
            if not is_string(name):
                raise TypeError("Property name must be a string")

            name = name.strip()

        if not name:
            # No name given: use the field name
            name = field

        self._field = field
        self._name = name
        self._value = value
def __init__ ( self , field , name = None , value = None ) : if not is_string ( field ) : raise TypeError ( "Field name must be a string" ) field = field . strip ( ) if not field or " " in field : raise ValueError ( "Empty or invalid property field name '{0}'" . format ( field ) ) if name is not None : if not is_string ( name ) : raise TypeError ( "Property name must be a string" ) name = name . strip ( ) if not name : name = field self . _field = field self . _name = name self . _value = value
:param field: The property field in the class (can't be None nor empty)
        :param name: The property name (if None, this will be the field name)
        :param value: The property value (None by default)
        :raise TypeError: Invalid argument type
        :raise ValueError: If the name or the name is None or empty