Question: I want to change the content of a List with a class funcion.
The class takes an item from the list as a parameter. Now I want to change this item in the list.

How do I do that? I was only able to change the parameter in the instance but not the original list.

```
list = ["just", "an", "list"]

class Test():
   def __init__(self, bla):
        self.bla = bla

    def blupp(self):
        self.bla = "a"

test = Test(list[1])

```

If I run `test.blupp()` I want the list to be `["just", "a", "list"]`

Thanks!
(I hope nothing important is missing. This is my first question here)

Answer: 
`list[1]` is an expression that evaluates to `"an"` before `Test` is ever called. You have to pass the list and the index to modify separately, and let `blupp` make the assignment.

```
class Test:
    def __init__(self, bla, x):
        self.bla = bla
        self.x = x

    def blupp(self):
        self.bla[self.x] = "a"

test = Test(list, 1)

```

Or, store a *function* that makes the assignment in the instance of `Test`:

```
class test:
    def __init__(self, f):
        self.f = f

    def blupp(self):
        self.f("a")

test = Test(lambda x: list.__setitem__(1, x))

```
From what I understand, you are asking to change `"an"` to `"a"` in the list `["just", "an", "list"]` by calling a method called `blupp`. To achieve this we need to redefine `list[1]`

```
# Define The List

list = ["just", "an", "list"]

class Test:
    def __init__(self, bla):
        self.bla = bla

    def blupp(self):
        # Choose what to redefine 'an' with
        self.new_bla = "a"

        # Get the position of self.bla 
        list[list.index(self.bla)] = self.new_bla # Replace 'an' with 'a'
        print(list)

# Define the test object
test = Test(list[1])

# Call the blupp() method
test.blupp()

```

And we get an output of:

```
["just", "a", "list"]

```