Как добавить новый элемент в список?

Как добавить новый элемент в список? Пробовал так, но в консоли выводит изменения, а сам список не меняется
@command(name="тест")
async def test54(self, ctx, url):
        a = url.split('=')[-1].split('/')[0]
        ger53.append(a)
        print(ger53)


пробовал ещё так
@command(name="тест")
async def test54(self, ctx, url):
        a = url.split('=')[-1].split('/')[0]
        gr = ger + [a,]
        print(ger53)


Тоже не работает, в консоли всё норм
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
У вас класс, в нем методы. Вы передаёте в методы класса экземпляр self. Класс нужен для того, чтобы его методами менять состояние атрибутов в экземпляре класса. А вы зачем-то используете методы класса как обычные функции, которые по-вашему должны что-то менять в каких-то глобальных переменных (типа ger53 в вашем коде).
Это совершенная каша и неправильное использование классов.
В самом примитивном случае правильное использование может выглядеть как-то так:
class MyTestObj(object):
    def __init__(self):
        self.ger53 = []
    
    def test54(self, arg):
        self.ger53.append(arg)
    
    def __repr__(self):
        return str(self.ger53)

my_instance = MyTestObj()
print(my_instance) # обращение к экземпляру до изменения состояния
my_instance.test54(42) # изменение состояния при помощи метода test54
print(my_instance) # обращение к экземпляру после изменения состояния 
print(my_instance.ger53[0]) # обращение к атрибутам экземпляра

Есть и более изощренные способы, с геттерами/сеттерами, прочими изысками.

Важно, что вы должны создавать экземпляр класса и менять его состояние, а не состояние чего-то вне класса.
И если надо получить результат всех этих действий, то вы обращаетесь к этому же экземпляру класса либо напрямую к атрибутам экземпляра.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы