Why this code doesnt work?

Hi, i’m on the"Object Oriented Python" mission, and i am unable to understant why this code doesnt work :

class NewList(DQ):
    def __init__(self, initial_state):
        self.data = initial_state
    
    def append(self, new_item):
        self.data = self.data + [new_item]
    def calc_length(self):
        length=0
        for item in self.data:
            length+=1
        print(length)
        
fibonnaci=NewList([1,1,2,3,5])
fibonnaci.calc_length()
fibonacci.append(8)
fibonacci.calc_length()

i do not understand the correct answer wich is :

class NewList():
    def __init__(self, initial_state):
        self.data = initial_state
        self.calc_length()

    def calc_length(self):
        length = 0
        for item in self.data:
            length += 1
        self.length = length

    def append(self, new_item):
        """
        Append `new_item` to the NewList
        """
        self.data = self.data + [new_item]
        self.calc_length()

fibonacci = NewList([1, 1, 2, 3, 5])
print(fibonacci.length)

fibonacci.append(8)
print(fibonacci.length)

Could you be more specific as to what " doesn’t work" means?

I see your answer stores the same instance variables and have the same method names, just that methods are called at different times. If your meaning of “doesn’t work” is that it fails answer checker, maybe the answer checker is checking for whether calc_length is called during __init__ and append

My problem was that i mistyped “fibonacci”, with this the code works :

class NewList():
    def __init__(self,initial_state):
        self.data=initial_state
        
    def append(self,new_item):
        self.data=self.data+[new_item]
        
    def calc_lenght(self):
        lenght=0
        for item in self.data:
            lenght+=1
        return lenght
    
a_list=NewList([1,2,3])
print(a_list.data)
print(a_list.calc_lenght())
a_list.append(4)
print(a_list.data)
print(a_list.calc_lenght())

but still, why is the DataQuest answer so different ? :

# The NewList definition from the previous
# screen is copied here for your convenience

# class NewList(DQ):
#     """
#     A Python list with some extras!
#     """
#     def __init__(self, initial_state):
#         self.data = initial_state
    
#     def append(self, new_item):
#         """
#         Append `new_item` to the NewList
#         """
#         self.data = self.data + [new_item]
class NewList(DQ):
    """
    A Python list with some extras!
    """
    def __init__(self, initial_state):
        self.data = initial_state
        self.calc_length()
    
    def calc_length(self):
        """
        A helper function to calculate the .length
        attribute.
        """
        length = 0
        for item in self.data:
            length += 1
        self.length = length
    
    def append(self, new_item):
        """
        Append `new_item` to the NewList
        """
        self.data = self.data + [new_item]
        self.calc_length()

fibonacci = NewList([1, 1, 2, 3, 5])
print(fibonacci.length)

fibonacci.append(8)
print(fibonacci.length)