Im trying to make a linked list in python and would like to print out the things but its printing as a memory location. We learnt how to fix this in class but im on half term at the moment and have nobody to ask.
An example of what im currently getting:
List: <__main__.LinkedList object at 0x02EA0100>
 index: 0    data: 1     item: <__main__.Node object at 0x02EA00D0>  pointer: <__main__.Node object at 0x02EA0148>
 index: 1    data: 6     item: <__main__.Node object at 0x02EA0148>  pointer: <__main__.Node object at 0x02EA0190>
 index: 2    data: 3     item: <__main__.Node object at 0x02EA0190>  pointer: None
This is not very usefull to me.
The method im using to get this masterpice:
def PrintList(self):
    item = self.list_start
    index = 0
    print(f"List: {self}")
    while item:
        print(
            f"\t index: {index}\t data: {item.data}\t item: {item}\t pointer: {item._get_pointer()}"
            )
        item = item._get_pointer()
        index += 1
Im sure theres something wrong in the print line i just cant spot it.
I know your not supposed to put loads of code on here but i need to give context
Node Class:
class Node:
def __init__(self, data=None, pointer=None):
    self.data = data
    self.poiner = pointer
def PrintNode(self):
    print(f"Node Data: {self.data}\t self: {self}\t pointer: {self.pointer}\n")
def _set_pointer(self, pointer):
    self.pointer = pointer
def _get_pointer(self):
    return self.pointer
LinkedLis Class:
class LinkedList:
def __init__(self):
    self.list_start = None
def PrintList(self):
    item = self.list_start
    index = 0
    print(f"List: {self}")
    while item:
        print(
            f"\t index: {index}\t data: {item.data}\t item: {item}\t pointer: {item._get_pointer()}"
            )
        item = item._get_pointer()
        index += 1
def _isleagl(self, node):
    if node is None:
        print(f"node' is None")
        return False
    elif type(node) != Node:
        print(f"'node' has worng type: {type(node)}")
        return False
    else:
        return True
def AppendNode(self, node):
    if self._isleagl(node):
        if self.list_start == None:
            self.list_start = node
            node._set_pointer(None)
        else:
            item = self.list_start
            while item:
                if item == node:
                    node = copy.deepcopy(node)
                elif item._get_pointer() is None:
                    item._set_pointer(node)
                    node._set_pointer(None)
                    break
                else:
                    item = item._get_pointer()
def DeleteNode(self, node):
    if self._islegal(node):
        if self.list_start == node:
            self.list_start = node._get_pointer()
        else:
            item = self.list_start
            while item:
                if item._get_pointer() == node:
                    item._set_pointer(node._get_pointer())
                break
            item = item._get_pointer()
Menu system: #i dont think this is going to be of much help
def main():
my_list = None
my_node = None
while True:
    print("Node Manipulations")
    print("\t 0: Create Node")
    print("\t 1: Set Node Data")
    print("\t 2: Print Node")
    print()
    print("List Manipulations")
    print("\t 3: Create List")
    print("\t 4: Print List")
    print("\t 5: Append Node to List")
    print("\t 6: Delete Node from List")
    print()
    print("X: EXIT Program")
    choice = input("->")
    if choice not in ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "x"]:
        continue
    if choice == "X" or choice == "x":
         break
    elif choice == "0":
        my_node = Node()
    elif choice == "1":
        if my_node is None:
            print("Create Node first")
        else:
            my_node.data = input("Node Data? -> ")
    elif choice == "2":
        if my_node is None:
           print("Create Node first")
        else:
            my_node.PrintNode()
    elif choice == "3":
        my_list = LinkedList()
    elif choice == "4":
        if my_list is None:
           print("Create List first")
        else:
            my_list.PrintList()
            print()
    elif choice == "5":
        if my_list is None:
            print("Create List first")
        else:
            my_list.AppendNode(my_node)
    elif choice == "6":
        if my_list is None:
            print("Create List first")
        else:
            my_list.DeleteNode(my_node)
 
     
    