Есть много способов сделать это!
jQuery
удалить все классы
$("element").removeClass();
ИЛИ
$("#item").removeAttr('class');
ИЛИ
$("#item").attr('class', '');
ИЛИ
$('#item')[0].className = '';
удалить мультикласс
$("element").removeClass("class1 ... classn");
ИЛИ
$("element").removeClass("class1").removeClass("...").removeClass("classn");
// remove all items all class
const items = document.querySelectorAll('item');
for (let i = 0; i < items.length; i++) {
items[i].className = '';
}
// only remove all class of first item
const item1 = document.querySelector('item');
item1.className = '';
Вот простой способ сделать хешируемый словарь. Просто помните, что не следует изменять их после встраивания в другой словарь по очевидным причинам.
class hashabledict(dict):
def __hash__(self):
return hash(tuple(sorted(self.items())))
Hashables должны быть неизменными - не принудительно, но ДОВЕРЯЯ вам не изменять дикт после его первого использования в качестве ключа, будет работать следующий подход:
class hashabledict(dict):
def __key(self):
return tuple((k,self[k]) for k in sorted(self))
def __hash__(self):
return hash(self.__key())
def __eq__(self, other):
return self.__key() == other.__key()
Если вам ДЕЙСТВИТЕЛЬНО нужно изменить ваши диктовки и ВСЕ ЕЩЕ хотят использовать их в качестве ключей, сложность взрывается стократно - не сказать, что это невозможно, но я подожду ОЧЕНЬ конкретного указания, прежде чем попаду в ЭТО невероятное болото! -)
Достаточно чистая и простая реализация:
import collections
class FrozenDict(collections.Mapping):
"""Don't forget the docstrings!!"""
def __init__(self, *args, **kwargs):
self._d = dict(*args, **kwargs)
def __iter__(self):
return iter(self._d)
def __len__(self):
return len(self._d)
def __getitem__(self, key):
return self._d[key]
def __hash__(self):
return hash(tuple(sorted(self._d.iteritems())))
Вы также можете добавить эти два метода, чтобы протокол травления v2 работал с экземплярами hashdict. В противном случае cPickle попытается использовать hashdict .____ setitem____, что приведет к ошибке TypeError. Интересно, что с двумя другими версиями протокола ваш код работает нормально.
def __setstate__(self, objstate):
for k,v in objstate.items():
dict.__setitem__(self,k,v)
def __reduce__(self):
return (hashdict, (), dict(self),)