Задать вопрос
@brexer74

Что сделать что бы при print списка выводились нормальные данные а не что то непонятное?

Вообщем, смысл кода в том, что бы создать токен и ссылку, а затем куда нибудь их сохранить (парами). Я использовал для этого классы и список (в чём скорее всего и кроется ошибка). Выполнив код и введя 1, получаю:
[<__main__.Create object at 0x0000020C5643CF10>]

Классы начал изучать недавно, так что за ужасность кода простите.

import random

class Create:
    def __init__(self, token1, link1):
        self.token1 = token1
        self.link1 = link1
        self.pares = []
    def info(self):
        print(str(self.pares))

class Menu:
    def __init__(self, add):
        self.add = add


    def start(self):
        print(f"--------------\nLink Menu\n1.Create Link\n2.Check Link")
        n = input("Enter number ")
        if int(n) == 1:
            l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
            random.shuffle(l)
            token = str(l)
            symbols_to_remove = " [],''"
            for symbol in symbols_to_remove:
                token = token.replace(symbol, "")
            l2 = ['a', 'b', 'c', 'd', 'e']
            random.shuffle(l2)
            link = str(l2)
            for symbol in symbols_to_remove:
                link = link.replace(symbol, "")
            self.add.pares.append(Create(token, link))
            print(token)
            print(link)
            add.info()


add = Create(1, 1)
menu = Menu(add)
menu.start()
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
То что ты положил то он тебе и выводит.
self.add.pares.append(Create(token, link)) Вот здесь ты добавил в свой список объект типа Create. Твой класс не имеет не метода __str__, не метода __repr__ То есть строковое представление объекта Create ты не создал. В таком случае python выводит просто адрес в памяти объекта Create. Определи что ты хочешь что бы там было.
Ну например
class Create:
    def __init__(self, token1, link1):
        self.token1 = token1
        self.link1 = link1
        self.pares = []
    def info(self):
        print(str(self.pares))

    def __str__(self):
        return f'Create({self.token1}, {self.link1})'

    def __repr__(self):
        return f'Create({self.token1}, {self.link1})'

Вот так он будет выводить объект и его параметры. Раз классы изучал, лекцию какой для чего метод читать не буду, сам почитаешь. Ну и определи свое какое ты имеешь ввиду для них строковое представление.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Классы по идее должны описывать объекты.
class Create какие объекты описывает? На мой взгляд, это скорее должно быть класс «TokenPair» или что-то такое. А у него должны быть методы типа set_pair, get_pair, delete_pair и возможно display.
Для токенов и для линков тоже должны быть отдельные классы.

class Menu по-идее должен описывать меню и тоже содержать методы для конструирования, изменения, возможно отображения и удаления меню.
Элементы меню тоже должны быть описаны своим отдельным классом.
Ни класс меню, ни класс элементов меню не должны содержать ни логики, ни других методов, занимающихся токенами, ссылками и их хранением.

Изучите методы random (например, randint), и библиотеку string, тогда не придется сочинять велосипеды со списками чисел.

Изучите методы строк (join, например), тогда не придется сочинять костыли с удалением кавычек и запятых.

Это так, по верхам.

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

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

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