看一下这个示例代码:
class Dog:
def __init__(self,breed,name):
self.breed = breed
self.name = name
def bark(self):
print("my name is {}".format(self.name))
class Cat:
def __init__(self,age):
self.age = age
def meow(self):
print("my name is {}".format(self.name))
myDog = Dog("daschund","bingo")
myCat = Cat(78)
myCat.meow()
注意:Cat 类不是从 Dog 类继承的。所以当你尝试运行这段代码时;它会抛出属性错误,因为“Cat”没有名为“name”的属性。
现在看一下这段遍历链表的代码
class Node():
def __init__(self,data=None,next=None):
self.data = data
self.next = next
class LinkedList():
def __init__(self):
self.head = None
def print_linkedlist(self):
if self.head == None:
print("Linked list is empty!")
else:
n = self.head
while n != None:
print(n.data)
n = n.next
就像最初的例子一样;这里 LinkedList 没有名为 data 或 next 的属性;因为它不是继承自 Node 类。那么 LinkedList 类中的 print_linkedlist() 方法如何访问 Node 类包含的数据和引用/指针呢?
TL;DR:该方法访问存储在
data
中的对象的方法next
和self.head
,该对象应该是Node类型。
print_linkedlist()
正在访问属于访问LinkedList的data
属性时返回的对象的next
和head
属性。我假设这个 LinkedList
对象将有一个 Node
对象设置为其 head
。每个 Node
将指向下一个 Node
,而 LinkedList
对象只是保留每个列表的第一个 Node
引用的方法。