Создание списка объектов с классом в Python - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь эмулировать метод Java toString, который я изучил некоторое время назад.Я могу быть вне базы, и, безусловно, может быть более простой способ сделать то, что я пытаюсь сделать, с помощью простого списка.

Что я действительно хочу сделать, так это иметь возможность добавлять объекты в список, а затем распечатывать конкретные характеристики этих объектов из списка.Я также хочу отслеживать индекс объекта.Вот что у меня есть, но когда я печатаю, я не получаю ошибок, а в пустой строке ничего не печатается.

class Character_list():
    def __init__(self, list):
        self.list = []

def toString(self):
    result = ""
    for i in self.list:
        result += self.list[i]

    return result

def main(): 
    x = Character_list([1, 2])
    print(x.toString())

main()

1 Ответ

0 голосов
/ 25 декабря 2018

Три вещи:

Во-первых, используйте параметр, передаваемый конструктору на самом деле , создайте экземпляр вашего объекта

class Character_list():
    def __init__(self, lst):
        self.lst = lst  # use the parameter! And don't use 'list' as a variable name
        # or even better, use a shallow copy:
        self.lst = list(lst)

Во-вторых, циклы Python обычно для каждого петель.Это означает, что вы перебираете элементы, а не индексы.Таким образом,

    for i in self.lst:
        result += i

фактически добавит элементы списка (которые должны быть строками, в противном случае используйте: result += str(i)) к result.

В-третьих, версия toString в Python - это__str__ и неявно вызывается при использовании встроенного str() на объекте.Так, например,

def __str__(self):
    return ''.join(map(str, self.lst))

будет делать то, что вы хотели, но в более общем смысле, например, когда вы звоните

print(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...