2024年05月16号【OOP学习笔记】

发布于:2024-05-20 ⋅ 阅读:(163) ⋅ 点赞:(0)

我会给你几个问题和任务,以帮助检验你对类和链表的理解。请尽量回答这些问题并完成任务。

理论问题

1类和对象:

什么是类

在编程语境中,是创建对象(object)的参考标准模版

同时,类还需要定义对象的属性(数据)和方法(函数)

什么是对象?

就是上述提到的类的实例

因为是类的实例,所以对象也继承了类中的属性(数据)和方法(函数)

我稍微补充一下两点:

第一点是属性:

第二点是方法:

  • 方法是定义在类中的函数。
  • 抽象层面的讲,方法就是用于描述对象的行为。

如何在Python中定义一个类?

在Python中定义一个类之前,我们还需要理解一个重要概念

那就是

构造函数(__init__ 方法)

  • __init__ 是一个特殊的方法,用于初始化对象。

为什么需要这个构造函数

因为

  • 在创建对象的时候,对象可以通过调用这个来创建类的实例

现在我们再回到这个问题:如何在Python中定义一个类?

# 定义一个类
class Dog:
    def __init__(self, name, age):  # 构造函数,用于初始化对象
        self.name = name  # 定义属性
        self.age = age

    def bark(self):  # 定义一个方法
        print(f"{self.name} is barking!")

# 创建对象
my_dog = Dog("Buddy", 3)

# 访问属性
print(my_dog.name)  # 输出: Buddy
print(my_dog.age)   # 输出: 3

# 调用方法
my_dog.bark()  # 输出: Buddy is barking!

逐步解释

  1. 定义类

    class Dog:

    • 使用 class 关键字定义一个类,类名是 Dog
  2. 构造函数

    def __init__(self, name, age): self.name = name self.age = age

    • __init__ 方法是构造函数,在创建对象时自动调用。
    • self 代表类的实例(对象),用于访问属性和方法。
    • nameage 是传入的参数,初始化对象的属性。
  3. 定义方法

    def bark(self): print(f"{self.name} is barking!")

    • bark 是一个方法,表示狗的行为。
  4. 创建对象

    my_dog = Dog("Buddy", 3)

    • 使用类名 Dog 创建一个对象 my_dog,传入参数 "Buddy"3
  5. 访问属性和方法

    print(my_dog.name) print(my_dog.age) my_dog.bark()

    • 使用 . 操作符访问对象的属性和方法。

回到链表的实现

了解了类和对象的基本概念,我们再来看链表的实现。我们先从最简单的部分开始,然后逐步构建。

定义节点类

节点是链表的基本单位,每个节点包含数据和指向下一个节点的指针。

class Node:
    def __init__(self, data):  # 构造函数,初始化节点
        self.data = data       # 节点的数据
        self.next = None       # 指向下一个节点的指针,初始为空
 

定义链表类

链表是由节点组成的结构,包含头节点的指针。

class LinkedList:
    def __init__(self):  # 构造函数,初始化链表
        self.head = None  # 头节点的指针,初始为空
 

添加节点方法

在链表末尾添加节点的方法。

def append(self, data):
    new_node = Node(data)  # 创建新节点
    if not self.head:  # 如果链表为空,新节点就是头节点
        self.head = new_node
        return
    last_node = self.head
    while last_node.next:  # 遍历找到链表的最后一个节点
        last_node = last_node.next
    last_node.next = new_node  # 将新节点添加到最后一个节点的 next

访问特定位置的元素方法

从头节点开始遍历,直到找到目标节点。

def get(self, index):
    current = self.head  # 从头节点开始
    count = 0  # 索引计数器
    while current:
        if count == index:  # 找到目标索引
            return current.data  # 返回目标节点的数据
        current = current.next  # 移动到下一个节点
        count += 1
    return None  # 如果索引超出范围,返回 None
 

通过这个逐步讲解,希望能帮助你理解类和对象的基本概念,并更好地理解链表的实现。理解这些概念后,链表的实现就会变得更加清晰。


网站公告

今日签到

点亮在社区的每一天
去签到