Bird
Raised Fist0
Pythonprogramming~10 mins

Self reference in Python - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to make the method return the instance itself.

Python
class Box:
    def get_self(self):
        return [1]
Drag options to blanks, or click blank then click option'
Aself
BBox
Cthis
Dinstance
Attempts:
3 left
💡 Hint
Common Mistakes
Returning the class name instead of the instance.
Using 'this' which is not a Python keyword.
2fill in blank
medium

Complete the code to set an attribute on the instance using self reference.

Python
class Person:
    def __init__(self, name):
        [1].name = name
Drag options to blanks, or click blank then click option'
APerson
Bthis
Ccls
Dself
Attempts:
3 left
💡 Hint
Common Mistakes
Using the class name instead of the instance.
Using 'cls' which is for class methods.
3fill in blank
hard

Fix the error in the method to return the instance's attribute using self reference.

Python
class Car:
    def __init__(self, model):
        self.model = model
    def get_model(self):
        return [1].model
Drag options to blanks, or click blank then click option'
Aself
BCar
Ccls
Dmodel
Attempts:
3 left
💡 Hint
Common Mistakes
Using the class name instead of the instance.
Trying to access attribute directly without self.
4fill in blank
hard

Fill both blanks to create a method that returns a new instance referencing the current instance's attribute.

Python
class Node:
    def __init__(self, value):
        self.value = value
    def copy(self):
        return [1](self.[2])
Drag options to blanks, or click blank then click option'
ANode
Bvalue
Cself
Dcopy
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'copy' as a class name.
Using 'value' instead of 'self' to access attribute.
5fill in blank
hard

Fill all three blanks to define a method that updates the instance's attribute and returns the instance itself.

Python
class Counter:
    def __init__(self, count=0):
        self.count = count
    def increment(self, amount):
        [1].count += [2]
        return [3]
Drag options to blanks, or click blank then click option'
Aself
Bamount
Dcount
Attempts:
3 left
💡 Hint
Common Mistakes
Returning amount instead of the instance.
Using the attribute name instead of self.

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