Bird
Raised Fist0
Pythonprogramming~20 mins

Accessing and modifying attributes in Python - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Attribute Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this attribute access code?
Consider this Python class and code. What will be printed?
Python
class Car:
    def __init__(self, brand):
        self.brand = brand

car = Car('Toyota')
print(car.brand)
ABrand
Bcar.brand
CToyota
DError: attribute not found
Attempts:
2 left
💡 Hint
Remember, accessing an attribute with dot notation prints its value.
Predict Output
intermediate
2:00remaining
What happens when modifying an attribute?
What will be the output after modifying the attribute?
Python
class Person:
    def __init__(self, name):
        self.name = name

p = Person('Alice')
p.name = 'Bob'
print(p.name)
ABob
BNone
CError: cannot modify attribute
DAlice
Attempts:
2 left
💡 Hint
You can change attributes by assigning new values.
Predict Output
advanced
2:00remaining
What is the output when accessing a missing attribute?
What happens when you try to access an attribute that does not exist?
Python
class Dog:
    def __init__(self, name):
        self.name = name

d = Dog('Rex')
print(d.age)
AAttributeError
BNone
CRex
D0
Attempts:
2 left
💡 Hint
If an attribute is not set, Python raises an error when accessed.
Predict Output
advanced
2:00remaining
What is the output after modifying a class attribute?
What will this code print?
Python
class Cat:
    species = 'Felis'

c1 = Cat()
c2 = Cat()
Cat.species = 'Felis catus'
print(c1.species)
print(c2.species)
AFelis\nFelis
BFelis\nFelis catus
CError: cannot modify class attribute
DFelis catus\nFelis catus
Attempts:
2 left
💡 Hint
Class attributes are shared by all instances unless overridden.
🧠 Conceptual
expert
2:00remaining
Which option causes an error when modifying attributes?
Given this code, which option will cause an error when trying to modify the attribute?
Python
class Immutable:
    __slots__ = ['value']
    def __init__(self, value):
        self.value = value

obj = Immutable(10)
Aobj.value = 20
Bobj.new_attr = 30
Cdel obj.value
Dprint(obj.value)
Attempts:
2 left
💡 Hint
Slots restrict adding new attributes not listed.

Practice

(1/5)
1. What is the correct way to access the attribute color of an object car in Python?
easy
A. car.color
B. car[color]
C. car->color
D. car[color()]

Solution

  1. Step 1: Understand attribute access syntax

    In Python, attributes of an object are accessed using dot notation: object.attribute.
  2. Step 2: Apply to given object and attribute

    For object car and attribute color, the correct syntax is car.color.
  3. Final Answer:

    car.color -> Option A
  4. Quick Check:

    Dot notation accesses attributes = car.color [OK]
Hint: Use dot (.) to access attributes on objects [OK]
Common Mistakes:
  • Using brackets like car[color]
  • Using arrow notation like car->color
  • Calling attribute as a function like car[color()]
2. Which of the following is the correct syntax to change the attribute age of an object person to 30?
easy
A. person["age"] = 30
B. person.age = 30
C. person->age = 30
D. person.age(30)

Solution

  1. Step 1: Recall attribute assignment syntax

    To modify an attribute, use dot notation with assignment: object.attribute = value.
  2. Step 2: Apply to given object and attribute

    Set person.age to 30 by writing person.age = 30.
  3. Final Answer:

    person.age = 30 -> Option B
  4. Quick Check:

    Assign attribute with dot and equals = person.age = 30 [OK]
Hint: Use dot and equals to set attribute: obj.attr = value [OK]
Common Mistakes:
  • Using brackets like person["age"] = 30
  • Using arrow notation person->age = 30
  • Trying to call attribute like a function person.age(30)
3. What will be the output of this code?
class Dog:
    def __init__(self, name):
        self.name = name

my_dog = Dog("Buddy")
print(my_dog.name)
my_dog.name = "Max"
print(my_dog.name)
medium
A. Buddy\nBuddy
B. Max\nBuddy
C. Max\nMax
D. Buddy\nMax

Solution

  1. Step 1: Understand initial attribute value

    The constructor sets self.name to "Buddy". So, my_dog.name is initially "Buddy".
  2. Step 2: Modify attribute and print again

    After printing "Buddy", the code sets my_dog.name = "Max". The second print outputs "Max".
  3. Final Answer:

    Buddy Max -> Option D
  4. Quick Check:

    Initial then changed attribute prints = Buddy Max [OK]
Hint: Changing attribute updates value printed next [OK]
Common Mistakes:
  • Thinking attribute change does not affect output
  • Confusing order of prints
  • Assuming attribute is immutable
4. Identify the error in this code snippet:
class Cat:
    def __init__(self, color):
        self.color = color

kitty = Cat("black")
print(kitty[color])
medium
A. Using brackets instead of dot to access attribute
B. Missing parentheses in class definition
C. Incorrect constructor name
D. Attribute 'color' not defined

Solution

  1. Step 1: Check attribute access syntax

    The code uses kitty[color], which tries to access like a dictionary key, but color is an attribute, not a key.
  2. Step 2: Correct syntax for attribute access

    Use dot notation: kitty.color to access the attribute.
  3. Final Answer:

    Using brackets instead of dot to access attribute -> Option A
  4. Quick Check:

    Attributes use dot, not brackets = Using brackets instead of dot to access attribute [OK]
Hint: Use dot, not brackets, to access attributes [OK]
Common Mistakes:
  • Using brackets like kitty[color]
  • Thinking attributes are dictionary keys
  • Confusing attribute access with indexing
5. Given this class:
class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author

book1 = Book("1984", "Orwell")
book2 = Book("Animal Farm", "Orwell")

# Change author of book2 to "George Orwell"

Which code correctly updates book2 author without affecting book1?
hard
A. book2["author"] = "George Orwell"
B. Book.author = "George Orwell"
C. book2.author = "George Orwell"
D. book1.author = "George Orwell"

Solution

  1. Step 1: Understand instance vs class attributes

    Changing book2.author modifies only that instance's attribute, not book1.
  2. Step 2: Avoid changing class attribute or other instance

    Assigning Book.author changes class attribute for all instances; changing book1.author affects wrong object; brackets are invalid syntax.
  3. Final Answer:

    book2.author = "George Orwell" -> Option C
  4. Quick Check:

    Set instance attribute with dot on correct object = book2.author = "George Orwell" [OK]
Hint: Assign attribute on specific object with dot notation [OK]
Common Mistakes:
  • Changing class attribute instead of instance attribute
  • Modifying wrong object's attribute
  • Using brackets instead of dot notation