抽象在这种情况下意味着什么?

Lea*_*eav 2 python 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
Run Code Online (Sandbox Code Playgroud)

目前代码挂在abstract函数的一部分h(...),但我不知道是什么abstract意思,因此无法理解问题是什么.

eld*_*rge 10

这是这里描述的一个技巧.abstractPython中没有关键字,因此,如果您不在某个子类中重写此方法,则会导致NotImplementedError.

  • 实际上是`NameError`.我认为这个技巧可能是我整个星期都看到的最糟糕的想法. (3认同)
  • 是的,可怕的做法.实际上你应该在需要覆盖的方法中自己引发`NotImplementedError`. (3认同)

Ale*_*lli 5

抽象方法是一个类没有实现的方法,使它成为一个抽象类; 子类必须覆盖所有抽象方法(即,提供具体实现)为具体类,即可以为其创建实例的类.Python中表达"此方法是抽象的"的常规方法是使方法的主体成为raise NotImplementedError.

有关一般概念的更多信息,除了Python中的详细信息外,请参阅维基百科.

因此,正式地说,您需要对此进行子类化并实现标记为"抽象"的两个方法.(根据你的TA的提示,他或她实际上可能意味着你应该用一个代码的工作代替"abstract"这个词,但这在OOP中的"抽象"的正常含义是相当大的! - ) .