Шаг 42.
Основы создания нейросети на Python.
Создаем нейронную сеть на Python. Простое введение в Python. Объекты

    На этом шаге мы дадим понятие объекта.

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

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

# класс объектов Dog (собака) 
class Dog:

    # собаки могут лаять 
    def bark(self): 
        print("Гав!")

    Начнем с того, с чем мы уже знакомы. Прежде всего, код включает функцию bark(). Как нетрудно заметить, при вызове данной функции она выведет слово "Гав!" Это довольно просто.

    А теперь рассмотрим код в целом. Вы видите ключевое слово class, за которым следуют имя Dog (собака) и структура, напоминающая функцию. Вы сразу же можете провести параллели между этой структурой и определением функции, которое также снабжается именем. Отличаются же они тем, что для определения функций используется ключевое слово def, тогда как для определения объектов используется ключевое слово class.

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

sizzles = Dog() 
sizzles.bark()

    В первой строке создается переменная sizzles, источником которой является, судя по всему, вызов функции. В действительности Dog() - это особая функция, которая создает экземпляр класса Dog. Теперь вы увидели, как создавать различные сущности из определений классов. Эти сущности называются объектами. В данном случае мы создали из определения класса Dog объект sizzles и можем считать, что этот объект является собакой!

    В следующей строке для объекта sizzles вызывается функция bark(). С этим вы уже немного знакомы, поскольку ранее успели поработать с функциями. Но вам нужно еще привыкнуть к тому, что функция bark() вызывается так, как если бы она была частью объекта sizzles. Это возможно, потому что данную функцию имеют все объекты, созданные на основе класса Dog, ведь именно в нем она и определена.

    Опишем все это простыми словами. Мы создали переменную sizzles, разновидность класса Dog. Переменная sizzles - это объект, созданный по шаблону класса Dog. Объекты - это экземпляры класса.

    Следующий пример показывает, что мы к этому времени успели сделать, и подтверждает, что функция sizzles.bark() действительно выводит слово "Гав!"


Рис.1. Результат вызова функции sizzles.bark()

    Возможно, вы обратили внимание на непонятный элемент self в определении функции - bark(self). Он здесь для того, чтобы указывать Python, к какому объекту приписывается функция при ее создании. Это должно быть очевидным, поскольку определение функции bark() включено в определение класса, а значит, Python должен знать, к какому объекту ее следует прикрепить.

    Рассмотрим примеры более полезного использования объектов и классов. Взгляните на следующий код.

sizzles = Dog() 
mutley = Dog()

sizzles.bark() 
mutley.bark() 


Рис.2. Создание двух объектов заданного класса и вызов с их использованием метода класса

    Это уже интересно! Мы создали два объекта: sizzles и mutley. Важно понимать, что оба они были созданы на основе одного и того же определения класса Dog. Замечательно! Сначала мы определяем, как объекты должны выглядеть и как должны себя вести, а затем создаем их реальные экземпляры.

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

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг