在下面的代码中用于Python3中的链表实现。如何在类外定义和调用reverse((和display((等函数。比如,应该如何创建一个执行display((和recerse((等操作的函数。我应该如何传递LinkedList对象以及如何访问其成员,以便能够执行所需的操作?
附言:我删除了其他功能,因为我无法发布这个问题。我不是在问导入类文件以在其他.py文件中使用的问题。
class Node:
def __init__(self,data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def display(self):
curr = self.head
while curr != None:
print(curr.data + '->', end = ' ')
curr = curr.next
print('NULL')
def append(self, data):
'''
statements....
'''
def length(self):
ptr = self.head
count = 0
while ptr.next != None:
count += 1
ptr = ptr.next
print(count+1)
def reverse(self):
pre = None
cur = self.head
while cur != None:
temp = cur.next
cur.next = pre
pre = cur
cur = temp
self.head = pre
self.display()
l = LinkedList()
l.append('A')
l.append('B')
l.append('C')
l.append('D')
l.prepend('E')
l.display()
不确定我是否正确理解了你的问题,但如果我理解了,那么你似乎只想获取所有代码,减去程序代码(在你的例子中是从"l=LinkedList(("开始(,并将其保存到python文件中,然后在你需要在中使用类的任何python代码的顶部,导入你的文件。
如果您的类文件与您希望使用该类的代码不在同一目录中,则需要将该类文件保存在路径中的一个目录中:
import sys
print(sys.path)
如果你想在你的路径中添加一个目录,你可以:
sys.path.append('<directory')
在这一点上,一旦你
import LinkedList
(假设您的类文件名为LinkedList.py(您将能够使用类定义变量,并像在示例中一样使用它,因此您的代码文件看起来像:
import LinkedList
l = LinkedList()
l.append('A')
l.append('B')
l.append('C')
l.append('D')
l.prepend('E')
l.display()
还是我只是没有正确阅读你的问题?
我为您添加了prepend和append方法,我不确定这是否是您所指的。此外,如果您正在寻找静态与类方法,您可以在这里查看:Python 中的类方法与静态方法
使用静态方法,您可以通过使用静态方法的参数来返回指定类的实例查看上面的链接,在类函数的实例之外使用类函数
以下是Python代码:
class Node:
def __init__(self,data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def display(self):
curr = self.head
while curr != None:
print(curr.data + '->', end = ' ')
curr = curr.next
print('NULL')
def append(self, data):
data_node = Node(data)
data_node.next = self.head
self.head = data_node
def prepend(self, data):
ptr = self.head
while ptr.next != None:
ptr = ptr.next
ptr.next = Node(data)
def length(self):
ptr = self.head
count = 0
while ptr.next != None:
count += 1
ptr = ptr.next
print(count+1)
def reverse(self):
pre = None
cur = self.head
while cur != None:
temp = cur.next
cur.next = pre
pre = cur
cur = temp
self.head = pre
self.display()
l = LinkedList()
l.append('A')
l.append('B')
l.append('C')
l.append('D')
l.prepend('E')
l.display()