Почему список слов не добавляет новые значения, а заменят старые новыми

class TextHandler():
    
    
    shortest_words = []
    longest_words = []
    
    
    def __init__(self, text = ""):
        self.text = text.split()
        
        
    def add_words(self, text):
        self.text.append(text)
        self.text = text.split()
        
        
    def get_shortest_words(self):
        min_len = 99999
        for i in range (len(self.text)):
            if min_len > len(self.text[i]):
                min_len = len(self.text[i])
        for i in range (len(self.text)):
               if len(self.text[i]) == min_len:
                    self.shortest_words.append(self.text[i])
        return self.shortest_words

Подаю на input такие значения:

texthandler = TextHandler()

texthandler.add_words('The world will hold my trial for your sins')

texthandler.add_words('Never meant to see the sky never meant to live')

print(texthandler.get_shortest_words())

из первого add_words он берет my и добавляет его в shortest_words, но при втором вызове, он стирает этот my и добавляет только to и to из второго инпута, почему стирается my из первого инпута и как его сохранить?

P.S. Только начал изучать ООП, возможно ошибка глупая, но я в упор не вижу проблемы, не судите строго


Ответы (1 шт):

Автор решения: facecaat
def add_words(self, text):
        self.text.extend(text.split())

решило проблему Метод extend добавляет элементы в конец существующего списка self.text, не перезаписывая его.

→ Ссылка