Question: What is the purpose of the `self` keyword when defining or calling methods on an instance of an object?

  1. `self` refers to the class that was inherited from to create the object using `self`.
  2. There is no real purpose for the `self` method. It's just legacy computer science jargon that Python keeps to stay consistent with other programming languages.
  3. `self` means that no other arguments are required to be passed into the method.
  4. `self` refers to the instance whose method was called.

Answer: The correct answer of the above question is Option D:`self` refers to the instance whose method was called.