python3 如何启用按名称打印单个 link 列表元素的功能

python3 How to enable the function that print the singly-link list elements by type it's name

如你所知,可以通过输入列表变量名来打印列表元素,所以我想实现与列表done相同的可以打印单个link列表元素的功能。

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)
......

谢谢。

您需要实施 __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