Question
You are using Python's built-in dict to store custom
objects. class MyObject:   def __init__(self, value):     self.value = value   # Missing or incorrect __eq__ and __hash__ methods   # def __eq__(self, other):   #   return self.value == other.value   #   # def __hash__(self):   #   return hash(self.value) obj1 = MyObject(10) obj2 = MyObject(10) my_dict = {} my_dict[obj1] = "First" my_dict[obj2] = "Second" # Intended to overwrite "First" If the __eq__ and __hash__ methods are *not* implemented in MyObject, what will be the state of my_dict after the code executes?Solution
Correct Answer: A (Without __eq__ and __hash__, Python's default behavior is to compare objects by identity, so obj1 and obj2 are considered different keys even if their value is the same.) • Dry Run: o obj1 = MyObject(10): Creates an instance of MyObject at a specific memory location (e.g., id(obj1) might be 1234). o obj2 = MyObject(10): Creates a new, distinct instance of MyObject at a different memory location (e.g., id(obj2) might be 5678). o my_dict[obj1] = "First": obj1 (identified by its memory address/default hash) is used as a key, and "First" is stored. o my_dict[obj2] = "Second": obj2 (identified by its different memory address/default hash) is used as a new key, and "Second" is stored. o Since obj1 and obj2 are distinct objects in memory, the dictionary treats them as two separate keys, even though their value attribute is the same. o The final my_dict will contain two entries: {obj1: "First", obj2: "Second"}. • Why Correct Answer (A): my_dict will contain obj1: "First" and obj2: "Second", treating them as distinct keys. o This correctly describes the outcome when __eq__ and __hash__ are not overridden, leading to identity-based key comparison.
An "object" is an instance of a:
Which of the following is a common way to achieve abstraction in OOP?
The bundling of data (attributes) and methods (functions) that operate on the data into a single unit (class), and restricting direct access to some of ...
Which type of polymorphism is achieved through method overloading (where multiple methods have the same name but different parameters)?
The ability of an object to take on many forms, or the ability of a single interface to represent different underlying forms, is known as:
The concept of showing only essential features of an object and hiding the complex implementation details is called:
The ability of an object to take on many forms is known as:
Which special method is automatically called when an object of a class is created, typically used for initializing the object's state?
Which OOP concept allows a class to inherit properties and behaviors from another class?
How is data hiding primarily achieved in OOP?