Друзья, кто-нибудь знает ли в Кудрово или в Санкт-Петербурге магазин с мерчами, наклейками для программистов? Может быть такое продают в каких-нибудь книжных магазинах? Хочется в живую, а не через Интернет, прийти, посмотреть.
А почему стандартные классы в питоне hashable по умолчанию и при вызове hash(obj) возвращают hash(id(obj)), а при этом датаклассы по умолчанию не hashable и их нужно делать неизменяемыми (frozen=True) хотя для обычных классов это не требуется.
И даже если мы положим объект в качестве ключа словаря (для стандартных классов), а потом измененим атрибут объекта, то хэш не имзенится ведь он завязан на id объекта.
я чёт пытался погуглить ничего толкового не нашёл. Я если честно не очень понимаю на кой в датаклассах изощрённый хэш по каждому атрибуту, который даже не позволяет добавить нехешируемые атрибуты типа list
То есть это не сработает:
@dataclass(frozen=True) class B: a: int b: list
hash(B(42, [1,2,3]))
Почему нельзя сделать завязку на id объекта как в обычных классах. Когда этого может оказаться недостаточно?