В этом руководстве я предполагаю, что у вас есть предыдущие базовые знания программирования на Python, особенно по реализации функций с аргументами.
Классы и объекты
Проще говоря, класс - это модель того, что вы хотите воссоздать в коде. Думайте об этом как о создании общей концепции всего, что вы пытаетесь воплотить в жизнь (в цифровом виде). Например, если вы хотите создать автомобиль, вам нужно определить, какие части должны быть в нем, чтобы работать так, как вы предполагаете.
Класс - это общая концепция этого автомобиля: абстрактная идея, в которой есть колеса, окна, двери, двигатель и так далее. Более того, объект может быть конкретной версией или экземпляром класса. Например, черная машина с 4 колесами, 6 окнами, 4 дверями, двигателем и т. Д. И т. Д.
Для наглядности посмотрите на изображение ниже. Автомобиль вверху представляет класс, а каждый из автомобилей внизу представляет объекты, основанные на классе автомобиля. Все объекты имеют одинаковую общую структуру, но различаются своими индивидуальными атрибутами.
Общая структура
В приведенном ниже коде объектmyCar
по своей сути имеет все атрибуты, которые должен иметь любой автомобиль, созданный на основе класса Car. В Python простой класс будет выглядеть примерно так: (ПРИМЕЧАНИЕ: числа - это номера строк, они НЕ являются частью кода)
1 class Car: 2 # Initializer 3 def __init__(self, color): 4 self.color = color 5 6 myCar = Car("Black")
Давайте разберемся:
- Строка
1
: запускает создание класса. - Строка
2
:#
относится к началу комментария. Все в этой строке будет проигнорировано компилятором. - Строка
3
: это подпись функции__init__
, которая служит конструктором. Он инициализирует класс Car. - Строка
4
: присваивает значения, переданные в качестве аргументов, атрибутам класса. - Строка
6
: содержит переменнуюmyCar
, в которой будет храниться объект с атрибутом цвета «Черный».
В приведенном выше коде для инициализации Car требуется только аргумент цвета. Однако, если вам потребуется более одного атрибута для создания автомобиля, их можно добавить как часть функции __init__
. См. ниже:
1 class Car: 2 # Initializer 3 def __init__(self, color, make): 4 self.color = color 5 self.make = make 6 7 myCar = Car("Black", "Toyota")
По сравнению с предыдущим блоком кода класс Car теперь имеет два атрибута: color
и make
. Теперь каждый объект, основанный на классе Car
, должен быть создан с обоими атрибутами, а не только с цветом.
Добавление функциональности в класс
Кроме того, автомобиль не функционирует, если он не может включаться, двигаться вперед, назад и поворачивать влево или вправо. В терминах программирования эта «способность» класса и связанные с ним объекты называются функциями. Это то, что дает объекту жизнь и позволяет ему «делать» вещи. Позвольте мне проиллюстрировать это на примере:
1 class Car: 2 # Initializer 3 def __init__(self, color): 4 self.color = color 5 6 # function 7 def moveForward(self): 8 print ("The car moved forward") 9 10 myCar = Car("Black") 11 myCar.moveForward()
Мы можем дать myCar
«возможность» двигаться вперед с помощью функции moveForward
, определенной после функции __init__
и вызывающей ее с помощью myCar.moveForward()
.
Атрибуты класса
Несмотря на то, что большинство атрибутов можно определить при создании объекта, некоторые другие заранее определены и установлены самим классом. Например, каждая машина должна иметь двигатель, чтобы нормально работать. Чтобы гарантировать, что у каждого объекта есть движок, вы указываете его в самом классе. В строке2
мы устанавливаем, что каждый объект из этого класса будет иметь ровно 1 движок.
1 class Car: 2 numberOfEngines = 1 3 4 # Initializer 5 def __init__(self, color): 6 self.color = color 7 8 # function 9 def moveForward(self): 10 print ("The car moved forward") 11 12 myCar = Car("Black") 13 myCar.moveForward()