python3 Как включить функцию, которая печатает элементы списка однократных ссылок по типу его имени - PullRequest
1 голос
/ 02 июля 2019

Как вы знаете, элементы списка можно распечатать, набрав имя переменной списка, поэтому я хочу получить функцию, которая может печатать элементы списка с односвязными ссылками так же, как и список готовых.

class Node():
    """create node"""
    def __init__(self, elem):
        self.elem = elem
        self.next = None  

class SingleLinkList():
    """create singly-linked list"""
    def __init__(self, node=None):
        self.__head = node

    def add(self, item):
    '''add elements in the list header'''
    node = Node(item)
    node.next = self.__head
    self.__head = node

l1 = SingleLinkList()
l1.add(2)
l1.add(3)

#when type print(l1) instead of l1.some_function(), the terminal will show the elements in the l1 from head to tail
print(l1)
......

Спасибовы.

1 Ответ

2 голосов
/ 02 июля 2019

вам нужно реализовать метод __str__.

попробуйте это:

class Node():
    """create node"""

    def __init__(self, elem):
        self.elem = elem
        self.next = None


class SingleLinkList():
    """create singly-linked list"""

    def __init__(self, node=None):
        self.__head = node

    def add(self, item):
        """add elements in the list header"""
        node = Node(item)
        node.next = self.__head
        self.__head = node

    def __str__(self):
        elems = []
        node = self.__head
        while node:
            elems.append(str(node.elem))
            node = node.next
        return ', '.join(elems)


l1 = SingleLinkList()
l1.add(2)
l1.add(3)

print(l1)

Выход:

3, 2

...