Рубрики
Без рубрики

Понимание объектно-ориентированного программирования с утверждением

Assert автоматизированное тестирование и утверждение Одна из многочисленных крутых вещей о науке о данных … Помечено наукой данных, машинным обучением, Python.

Утверждать

Автоматизированное тестирование и утверждение

Одним из многих прохладных вещей о науке данных с нуля (Джоэл Грус) является его использование утверждений как путь к «тестирующему» коду. Это практика по разработке программного обеспечения (см. « . рост использования И вскоре станет лучшей практикой, если мы не Уже там Отказ

Хотя есть структуры тестирования, которые заслуживают своих собственных глав, на протяжении всего Это Книга, к счастью, автор предоставил простым способом тестирования в мероприятии Утверждать Ключевое слово, вот пример:

# create function to return the largest value in a list
def largest_item(x):
    return max(x)

# assert that our function is working properly
# we will see 'nothing' if things are working properly
assert largest_item([10, 20, 5, 40, 99]) == 99

# an AssertionError will pop up if any other value is used
assert largest_item([10, 20, 5, 40, 99]) == 40
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
 in 
----> 1 assert largest_item([10, 20, 5, 40, 99]) == 40

# we can also create an assertion for input values
def largest_item(x):
    assert x, "empty list has no largest value"
    return max(x)

Объектно-ориентированное программирование

Объектно-ориентированное программирование может быть его собственной главой, поэтому мы не будем пытаться стрелять для полномочий здесь. Вместо этого мы постараемся понять это основы и утверждать Функция собирается помочь нам понять это еще лучше.

Во-первых, мы создадим класс CountClicker которые инициализируются в COUNT 0, имеет несколько методов, включая Нажмите Способ увеличения количества, а читать Способ прочитать настоящее количество подсчета и Сброс Способ для сброса отсчета обратно на 0.

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

Вы Примечание То, что есть частные методы и общедоступные методы. Частные методы имеют Двойной подчеркивает (AKA DUTER MESSIC), они вообще не вызываются, но Питон не остановит вас. Тогда у нас есть более знакомые публичный методы. Кроме того, все методы должны быть написаны в пределах Объем класса CountClicker Отказ

class CountingClicker:
    """A class can/should have a docstring, just like a function"""
    def __init__(self, count = 0):
        self.count = count
    def __repr__(self):
        return f"CountingClicker(count = {self.count})"
    def click(self, num_times = 1):
        """Click the clicker some number of times."""
        self.count += num_times
    def read(self):
        return self.count
    def reset(self):
        self.count = 0

После того, как мы написали класс и связанные с ними методы, мы можем написать Утверждать утверждения для тестирования их. Вы захотите написать следующие заявления В этом порядке Потому что мы тестируем поведение нашего CountClicker класс.

clicker = CountingClicker()

assert clicker.read() == 0, "clicker should start with count 0"

clicker.click()

clicker.click()

assert clicker.read() == 2, "after two clicks, clicker should have count of 2"

clicker.reset()

assert clicker.read() == 0, "after reset, clicker should be back to 0"

Таким образом, мы создали класс CountClicker чьи методы позволяют его отображать в тексте ( __REPR__ ), Нажмите , читать и Сброс Отказ

Все эти методы принадлежат к класс CountClicklicker и будет передан в новые экземпляры классов – мы еще не посмотрим, как это будет выглядеть так, как оно относится к задачам в науке о данных, поэтому мы пересмотрим на этот пост, когда у нас будут обновления на приложенном конце.

Тогда мы проверили наш класс CountClicker с различными Утверждать заявления, чтобы увидеть, ведет себя ли это как предполагаемое.

Это один раздел Quick Python Crash Country, как передано из Наука данных с нуля (By Joel Grus), вы можете быть заинтересованы в этих других сообщениях:

  • Список Python и Numpy Array
  • defaultdict
  • Словари
  • Настройка виртуальной среды

Оригинал: “https://dev.to/paulapivat/understanding-object-oriented-programming-with-assert-2n15”