'Overrides the equal operator to check equality of member variables rather than the object\'s address.
Also allows comparison with dict-type tabs (needed to support callers implemented before this class
was implemented).'

def __eq__(self, other):

    if (isinstance(other, dict) and (not self.validate(other, raise_error=False))):
        return False
    name_is_eq = ((other.get('name') is None) or (self.name == other['name']))
    return ((self.type == other.get('type')) and name_is_eq)
