在这种情况下,abstract是什么意思?

3 投票
4 回答
2319 浏览
提问于 2025-04-15 16:15

我需要一些帮助来理解一个Python的概念。

class TilePuzzleProblem(search.Problem):
""" This class is the class for the NxN - blanks tile puzzle problem """

    def __init__(self, N, blanks, initial, goal):
        """ Initialize """
        search.Problem.__init__(self, initial, goal)
        self.N = N
        self.blanks = blanks

    def successor(self, state):
        """ Generate the successors of the given state. Returns a list of (move, successor) pairs"""
        abstract

    def h(self, node):
        abstract

现在代码在函数h(...)abstract部分卡住了,但我不知道abstract是什么意思,所以无法理解问题出在哪里。

4 个回答

1

抽象函数就是没有具体实现的函数。它就像一个占位符,主要是为了让你知道这个类需要哪些方法,子类应该提供哪些功能。你需要做的就是创建一个TilePuzzleProblem的子类,然后自己实现h这个函数。如果你想直接运行它,可以创建一个子类,让你的h函数什么都不做。

5

抽象方法是指一个类没有实现的方法,这样的类就叫做抽象类。它的子类必须重写所有的抽象方法,也就是说要提供具体的实现,才能成为具体类,也就是可以创建实例的类。在Python中,表示“这个方法是抽象的”通常是让方法的内容是raise NotImplementedError

想了解更多关于这个概念的信息,可以去看看维基百科

所以,正式来说,你需要创建一个子类,并实现那些被标记为“抽象”的两个方法。(根据你老师的提示,他或她可能实际上是想让你把“抽象”这个词换成可以运行的代码,但这在面向对象编程中对“抽象”的正常理解来说有点牵强!)

11

这里介绍了一种技巧,详细内容可以在这里找到。Python没有像其他语言那样的abstract关键字,所以如果你在某个子类中不重写这个方法,就会出现NotImplementedError的错误。

撰写回答