需要帮助理解代码

时间:2010-07-12 08:38:40

标签: python oop

class Problem:

    """
    This class outlines the structure of a search problem, but doesn't implement
    any of the methods (in object-oriented terminology: an abstract class).
    """

    def getStartState(self):

         """Returns the start state for the search problem"""

         sahan.raiseNotDefined()

现在我想知道上面代码的含义?我可以在其他类函数中使用类中定义的函数吗?

类doc字符串是什么意思?

3 个答案:

答案 0 :(得分:2)

这个类试图定义一个抽象基类,这就是Java中的Interface或C ++中只有pure virtual methods的类。本质上,它是为一组类定义合同但不提供实现。此类的用户将实现子类中的行为。此类尝试以编程方式记录接口,并明确表示无法使用该接口。

创建用户将扩展的接口通常是很好的做法,但通常在创建框架时完成。框架的核心提供了一些写入接口的有用的通用行为,框架的用户实现了行为以实现其特定目标。

Python是一种动态类型语言,历史上没有直接支持抽象基类。然而,对它们的需求一直默认为一些高调的框架提供了自己的支持这一概念。这个想法最终在抽象基类(abc)标准库模块中形式化。

答案 1 :(得分:1)

def getStartState(self)是一种存根方法;它完全被宣布,但目前并没有真正“做”任何功能。

调用时,会引发异常。子类需要使用实际的功能代码实现此方法,以使事情正常工作。

另见

答案 2 :(得分:0)

class Problem:

    """

    This class outlines the structure of a search problem, but doesn't implement
    any of the methods (in object-oriented terminology: an abstract class).

    """

    def getStartState(self):

        """

        Returns the start state for the search problem 

        """

        pass

允许您使用此类并表示尚未定义。

通过引发notDefinedError,您明确指出当您尝试使用该类时此代码将失败(而不是在您尝试使用其方法时静默失败)。

Python有一个内置的例外,叫做NotImplementedError

class Problem:

    """

    This class outlines the structure of a search problem, but doesn't implement
    any of the methods (in object-oriented terminology: an abstract class).

    """

    def getStartState(self):

        """

        Returns the start state for the search problem 

        """

        raise NotImplementedError()

类doc基本上声明这是一个要遵循的接口,一个抽象类,你要么继承这个类,要么覆盖那里的函数。