'Clears the attribute from this object.'

@utils.Synchronized
def DeleteAttribute(self, attribute):

    if ('w' not in self.mode):
        raise IOError(('Deleting    attribute    %s    from    read    only    object.' % attribute))
    if ((self.mode != 'w') and attribute.lock_protected and (not self.transaction)):
        raise IOError(('Object    must    be    locked    to    delete    attribute    %s.' % attribute))
    if (attribute in self.synced_attributes):
        self._to_delete.add(attribute)
        del self.synced_attributes[attribute]
    if (attribute in self.new_attributes):
        del self.new_attributes[attribute]
    if (attribute.versioned and attribute.creates_new_object_version):
        self._new_version = True
    self._dirty = True
