Ctrl K
Python · Mid-level · Theory

You overrode __eq__ on a Money class, and when you tried to put an object in a set, you got TypeError: unhashable type. Why did this happen, and how do you correctly implement equality and hashing?

~4 min by voice

How to approach it

This checks your understanding of the hashing protocol in Python: why __eq__ without __hash__ makes an object unhashable, what contract connects equality and the hash, and why set and dict keys must be immutable.

Have you seen this question in a real interview?
Answers0
Avg. score—
Strong—
Practiced0
Topics
Similar questionsImagine a function add with a parameter items whose default value is an empty list. The function appends an element to that list and returns it. What happens if you call it twice in a row without passing the second argument? JuniorA service has a function def add_tag(tag, tags=[]), and after a few calls, the results start containing tags that belong to other calls. What's going on, and how do you fix it? Mid-levelTell me how mutable data types in Python differ from immutable ones. Give examples and explain why it matters in practice. JuniorWhat happens when you override __eq__ in your class, and how does that relate to __hash__? How would you make an object that can safely be put in a set and used as a dictionary key? SeniorWhat are magic, or dunder, methods in Python? What are they for? Give a few examples. Junior

Answer by voice

The interviewer will ask this question and listen. Think out loud and ask for a hint if you need one. When you're done, pause or tap “That's my answer”. In about a minute, your score and the points you covered show up here.

Sign in to answer

Best with headphones · ~4 min