Потушение функций или классов - PullRequest
7 голосов
/ 01 октября 2011

Можете ли вы объяснить концепцию stubbing out functions or classes взято из этой статьи ?

class Loaf:
    pass  

Этот класс не определяет никаких методов или атрибутов, но синтаксически, в определении должно быть что-то, поэтому вы используете pass. Это зарезервированное для Python слово, которое означает «двигаться вперед, здесь нечего видеть». Это утверждение, которое ничего не делает, и является хорошим заполнителем, когда вы заглушаете функции или классы.

спасибо

Ответы [ 5 ]

23 голосов
/ 01 октября 2011

заглушение функций или классов

Это относится к написанию классов или функций, но еще не реализует их. Например, возможно я создаю класс:

class Foo(object):
     def bar(self):
         pass

     def tank(self):
         pass

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

class Foo(object):
     def bar(self):
         raise NotImplementedError

     def tank(self):
         raise NotImplementedError

Таким образом, если вы случайно вызовете метод до его реализации, вы получите ошибку, тогда ничего не произойдет.

5 голосов
/ 01 октября 2011

'Заглушка' - это класс или функция-заполнитель, которые еще ничего не делают, но должны быть там, чтобы определить рассматриваемый класс или функцию. Идея состоит в том, что вы уже можете использовать некоторые его аспекты (например, поместить их в коллекцию или передать как обратный вызов), даже если вы еще не написали реализацию.

Заглушка - полезная техника в ряде сценариев, включая:

  • Разработка команды: часто ведущий программист предоставляет скелеты классов, заполненные заглушками методов и комментариями, описывающими, что метод должен делать, оставляя фактическую реализацию другим членам команды.
  • Итеративная разработка: Stubbing позволяет начинать с частичной реализации; код еще не будет завершен, но он все еще компилируется. Детали заполняются в течение последующих итераций.
  • Демонстрационные цели: если содержание метода или класса не представляет интереса для целей демонстрации, его часто пропускают, оставляя только заглушки.
1 голос
/ 08 мая 2018

Обратите внимание, что вы можете заглушить функции следующим образом:

def get_name(self) -> str : ...
def get_age(self) -> int : ...

(да, это действительный код Python!)

Это может быть полезно для заглушки функций, которые динамически добавляются к объекту сторонней библиотекой, и вам нужны подсказки для ввода. Бывает со мной ... однажды: -)

1 голос
/ 01 октября 2011

Stubbing - это методика разработки программного обеспечения. После того, как вы запланировали модуль или класс, например, нарисовав диаграмму UML, вы приступаете к его реализации.

Поскольку вам, возможно, придется реализовать много методов и классов, вы начнете с заглушек. Это просто означает, что вы только записываете определение функции и оставляете фактический код на потом. Преимущество заключается в том, что вы не забудете методы и сможете продолжать думать о своем дизайне, видя его в коде.

1 голос
/ 01 октября 2011

Причина pass заключается в том, что Python зависит от отступа и ожидает один или несколько операторов с отступом после двоеточия (например, после class или function).

Если у вас нет операторов (как в случае с заглушенной функцией или классом), по-прежнему должен быть хотя бы один оператор с отступом, так что вы можете использовать специальный оператор pass в качестве заполнителя. Вы можете так же легко положить что-то без эффекта, как:

class Loaf:
    True

и это тоже хорошо (но, на мой взгляд, менее понятно, чем использование pass).

...