xplicação necessária em relação à explicação de objetos hashab

Mark Ransom respondeu em umSO pergunta sobre hashes aqui no SO:

<, p> [...] Um objeto é lavável se tiver um valor de hashque nunca muda durante sua vida útil. Portanto, pela definição oficial, qualquer coisa mutável não pode ser lavável, mesmo que tenha um__hash__() função. Minha declaração sobre a necessidade de ambos os requisitos é falsa, porque ser lavável já implica a exigência de ser imutáve

Eu quero ter certeza de que eu entendi direito - mesmo que não seja um falante nativo -, então espero que alguém me corrija se eu entendi errad

Assumindo esta aula

class Author(object):
    def __init__(self, id, name, age):
        self.id = id
        self.name = name
        self.age = age

    def __eq__(self, other):
        return self.id==other.id\
               and self.name==other.name

    def __hash__(self):
        return hash(('id', self.id,
                     'name', self.name))

Eu entendi aquilo__eq__ permite comparar objetos dessa classe com o== operador. De Marks respondo, eu entendo que, mesmo que meu objetopeter = Author(1, "Peter", 33) tem um__hash__ não é lavável, porque eu poderia fazer algo comopeter.age = 43, o que significa que não é imutável. Então, meus objetos da classeAuthor não são laváveis e, portanto, não podem ser usadas como chaves em dicionários, por exemplo? Eu acertei ou parece que preciso de mais explicações? : -)

questionAnswers(1)

yourAnswerToTheQuestion