Bird
Raised Fist0
Pythonprogramming~5 mins

Self reference in Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What does self mean in a Python class?

self is a way for an object to refer to itself inside its methods. It lets the object access its own attributes and other methods.

Click to reveal answer
beginner
Why do we need to use self in method definitions?

Because Python does not automatically pass the object to methods. self is the first parameter that receives the object when a method is called.

Click to reveal answer
beginner
How do you use self to change an object's attribute inside a method?

You write self.attribute_name = new_value inside the method to update the object's attribute.

Click to reveal answer
intermediate
What happens if you forget to include self as the first parameter in a method?

Python will raise an error because it expects the method to receive the object as the first argument, but it won't get it.

Click to reveal answer
intermediate
Can self be named something else?

Yes, but self is the strong convention in Python. Using other names can confuse readers.

Click to reveal answer
In Python, what does self represent inside a class method?
AThe instance of the class calling the method
BA global variable
CA class method decorator
DA local variable inside the method
What will happen if you define a method without self as the first parameter and try to call it on an object?
AIt will work normally
BPython will raise a TypeError
CThe method will be treated as a static method
DThe method will ignore the object
Which of these is the correct way to set an attribute name inside a method using self?
Aself->name = 'Alice'
Bname = 'Alice'
Cself.name = 'Alice'
Dset self.name = 'Alice'
Is it mandatory to name the first parameter self in Python class methods?
AYes, it must be <code>self</code>
BYes, or the code will not run
CNo, you can omit it
DNo, but it is strongly recommended
What is the role of self when calling another method inside the same class?
AYou use <code>self.method_name()</code> to call it on the same object
BYou call methods directly by name without <code>self</code>
CIt is not needed to call other methods
DYou must import the method first
Explain what self means in Python classes and why it is important.
Think about how an object talks about itself inside its own methods.
You got /4 concepts.
    Describe how you would use self to change an attribute inside a class method.
    Imagine you want to update a property of your own object.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does self represent inside a Python class method?
      easy
      A. A class method decorator
      B. The current instance of the class
      C. A global variable
      D. A built-in Python keyword

      Solution

      1. Step 1: Understand the role of self in classes

        self is used to refer to the current object instance inside class methods.
      2. Step 2: Differentiate from other options

        It is not a global variable, decorator, or keyword but a conventional name for the instance parameter.
      3. Final Answer:

        The current instance of the class -> Option B
      4. Quick Check:

        self = current object [OK]
      Hint: Remember: self means 'this object' inside class methods [OK]
      Common Mistakes:
      • Thinking self is a keyword
      • Confusing self with class itself
      • Assuming self is optional
      2. Which of the following is the correct way to define a method using self in a Python class?
      easy
      A. def method(self):
      B. def method(this):
      C. def method(cls):
      D. def method():

      Solution

      1. Step 1: Recall method definition syntax in Python classes

        Instance methods must include self as the first parameter to access instance data.
      2. Step 2: Check each option

        Only def method(self): correctly includes self as the first parameter.
      3. Final Answer:

        def method(self): -> Option A
      4. Quick Check:

        Method needs self parameter [OK]
      Hint: Always put self as first parameter in instance methods [OK]
      Common Mistakes:
      • Omitting self parameter
      • Using wrong parameter name like cls or this
      • Confusing class and instance methods
      3. What is the output of this code?
      class Counter:
          def __init__(self):
              self.count = 0
          def increment(self):
              self.count += 1
              return self.count
      c = Counter()
      print(c.increment())
      print(c.increment())
      medium
      A. 1 2
      B. 0 1
      C. 1 1
      D. 2 3

      Solution

      1. Step 1: Understand the initial state and method behavior

        When Counter is created, count is 0. Each increment adds 1 and returns the new value.
      2. Step 2: Trace the two calls to increment()

        First call: count goes 0 -> 1, returns 1. Second call: count goes 1 -> 2, returns 2.
      3. Final Answer:

        1 2 -> Option A
      4. Quick Check:

        Increment adds 1 each call [OK]
      Hint: Track self.count changes step-by-step [OK]
      Common Mistakes:
      • Assuming count resets each call
      • Confusing return values
      • Ignoring self reference updates
      4. Find the error in this class definition:
      class Person:
          def __init__(name):
              self.name = name
      p = Person('Alice')
      print(p.name)
      medium
      A. Using self before assignment
      B. Incorrect print statement
      C. Missing self parameter in __init__
      D. Class name should be lowercase

      Solution

      1. Step 1: Check method parameters

        The __init__ method must have self as the first parameter to refer to the instance.
      2. Step 2: Identify the error

        Here, __init__ only has name, so self is missing, causing a runtime error.
      3. Final Answer:

        Missing self parameter in __init__ -> Option C
      4. Quick Check:

        __init__ needs self first [OK]
      Hint: Always include self as first parameter in instance methods [OK]
      Common Mistakes:
      • Forgetting self in __init__
      • Trying to use self without defining it
      • Assuming self is automatic
      5. You want to create a class Node for a linked list where each node refers to itself and the next node. Which is the correct way to set the next node using self reference?
      class Node:
          def __init__(self, value):
              self.value = value
              self.next = None
          def set_next(self, next_node):
              ???

      Choose the correct line to replace ???.
      hard
      A. next_node = self.next
      B. next = self.next_node
      C. self.next_node = next_node
      D. self.next = next_node

      Solution

      1. Step 1: Understand attribute assignment with self

        To update the current object's next attribute, use self.next.
      2. Step 2: Match the correct assignment

        Assigning self.next = next_node correctly sets the next node reference.
      3. Final Answer:

        self.next = next_node -> Option D
      4. Quick Check:

        Use self.attribute = value to update instance data [OK]
      Hint: Use self.attribute to refer to current object's data [OK]
      Common Mistakes:
      • Assigning to local variable instead of self attribute
      • Mixing attribute names
      • Forgetting self in assignment