在这种情况下,abstract是什么意思?
我需要一些帮助来理解一个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
的错误。