нужна помощь в понимании кода - PullRequest
0 голосов
/ 12 июля 2010
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()

Теперь я хочу узнать значение вышеприведенного кода? я могу использовать функции, определенные в классе, в некоторых других функциях класса как есть?

Что означает строка класса документа?

Ответы [ 3 ]

2 голосов
/ 12 июля 2010

Этот класс является попыткой определить абстрактный базовый класс, это будет Интерфейс в Java или класс с только чисто виртуальными методами на С ++. По сути, это определение договора для группы классов, но не предоставление реализации. Пользователи этого класса будут реализовывать поведение в подклассах. Этот класс является попыткой программно документировать интерфейс и дать понять, что его нельзя использовать.

Создание интерфейсов, которые будут расширять пользователи, является хорошей практикой в ​​целом, но обычно это делается при создании инфраструктуры. Ядро платформы обеспечивает некоторое полезное общее поведение, записанное в интерфейс, при этом пользователи платформы реализуют поведение для достижения своих конкретных целей.

Python, являющийся динамически типизированным языком, исторически не имел прямой поддержки абстрактного базового класса. Однако необходимость в них всегда молчаливо признавалась некоторыми высококлассными структурами, обеспечивающими собственную поддержку концепции. Эта идея была окончательно формализована в стандартном библиотечном модуле Abstract Base Classes ( abc ).

1 голос
/ 12 июля 2010

def getStartState(self) - меткий метод;он полностью объявлен, но на самом деле ничего не делает в данный момент.

При вызове возникает исключение.Подклассы должны реализовать этот метод с фактическим функциональным кодом, чтобы заставить вещи работать должным образом.

См. Также

0 голосов
/ 12 июля 2010
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()

Класс документа в основномуказав, что это интерфейс, которому нужно следовать, абстрактный класс, и вы должны либо наследовать класс this, либо переопределить функцию тут же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...