В объектно-ориентированном языке класс - это расширяемый фрагмент кода, представляющий шаблон для создания и использования объектов этого класса. Объект класса просто ссылается на экземпляр определенного класса.
Основы классов Python
В языке программирования Python каждая часть данных представлена как экземпляр некоторого класса. Если вы не знакомы с языком, см. Наш руководство по Python для новичков прежде чем двигаться дальше.
Класс предоставляет набор поведений в форме функций-членов (также известных как методы), реализация которых является общей для все экземпляры этого класса, а также определяет способ представления информации о состоянии для его экземпляра в форме атрибуты.
Прочитайте больше: Методы классов в Python: важные различия
Приведенный ниже код представляет собой пример определенного класса в Python. Класс, определенный в коде, обеспечивает реализацию класса RaceCar.
Каждый экземпляр класса предоставляет простую модель для разных марок автомобилей и содержит следующее состояние информация: название автомобиля, имя водителя, номерной знак автомобиля, текущая скорость, плата за превышение скорости и цвет.
Этот класс автомобилей моделирует специальный датчик в каждом автомобиле, который регистрирует штраф в размере 50 долларов США для водителя автомобиля, если он или она превысит установленную законом скорость в 140 миль в час.
Пример класса (автомобильный класс)
класс Автомобиль:
#Конструктор
# метод init отвечает за инициализацию значений экземпляра # переменных в классе.
def __init __ (self, car_name, driver_name, license_plate_number,
current_speed, speeding_charge, цвет):
self.car_name = car_name
self._driver_name = имя_драйвера
self._license_plate_number = License_plate_number
self._current_speed = current_speed
self._speeding_charge = speeding_charge
self._colour = цвет
# Методы-преемники
# Метод get_car_name возвращает название машины
def get_car_name (сам):
вернуть self._car_name
# Метод get_driver_name возвращает имя драйвера
def get_driver_name (сам):
вернуть self._driver_name
# Метод get_license_plate возвращает номер автомобиля
def get_license_plate (сам):
вернуть self._license_plate
# Метод get_current_speed возвращает текущую скорость, с которой автомобиль # движется
def get_current_speed (сам):
вернуть self._current_speed
# Метод get_speeding_charge возвращает общую сумму денег, которую
# водитель должен платить за превышение скорости
def get_speeding_charge (сам):
вернуть self._speeding_charge
# Метод get_colour возвращает цвет нашей сладкой поездки!
def get_colour (сам):
вернуть self._colour
# Методы-мутаторы
# Значение set_driver меняет водителя нашей машины.
def set_driver (self, new_driver):
self._driver_name = новый_драйвер
# Метод speeding_ticket гарантирует, что с водителя взимается плата в размере 50 баксов, # когда он или она поймали скорость выше 140 миль в час :(
def speeding_ticket (self, current_speed):
если current_speed <= 140:
вернуть ложь
еще:
self._speeding_charge + = 50
вернуть True
# Метод make_payment гарантирует, что водитель сможет оплатить всю # сумму, которую он должен за штраф за превышение скорости.
def make_payment (self, amount_paid):
self._speeding_charge - = amount_paid
Объяснение примера класса Python
Параметр "Я"
Во-первых, обратите внимание, что существует разница между сигнатурой метода, объявленной в классе, и сигнатурой метода, которая используется программистом для вызова функции. Например, get_colour Метод, как определено в классе, принимает один параметр, который является параметром «self».
Однако, когда программист вызывает этот метод для экземпляра класса, он не предоставляет никаких параметров. То же самое явление можно наблюдать в методе speeding_ticket, который определен, чтобы принимать два параметра в классе (т. Е. Self и current_speed), но программист может выполнить этот метод, указав значение только для «current_speed» параметр.
Это связано с тем, что цель предоставленного параметра «self» состоит в том, чтобы привязать метод к экземпляру объекта, для которого он был вызван, и это не значение, которое программист задает.
Конструктор
Конструктор класса относится к методу класса, который пользователь может вызвать для создания экземпляра объекта этого класса. В классе Car пользователь может создать экземпляр объекта, используя следующий синтаксис:
# создание нашего собственного Bugatti :)
Автомобиль («Бугатти», «Дэвид Сасу», 90828, 0, 0, «Вишневый красный»)
Выполнение этого кода приводит к вызову метода __init__ в классе Car. Этот метод отвечает за создание вновь созданного объекта кредитной машины с предоставленными значениями экземпляра. Каждый объект класса Car состоит из шести переменных экземпляра, а именно:
- _car_name
- _driver_name
- _Номерной знак
- _текущая скорость
- _speeding_charge
- _цвет
Методы доступа
Это методы, написанные для доступа к информации о состоянии экземпляра объекта. В классе Car были написаны следующие методы доступа:
- get_car_name
- get_driver_name
- get_license_plate
- get_current_speed
- get_speeding_charge
- get_colour
Методы мутатора:
Это методы, написанные для изменения информации о состоянии экземпляра объекта. В классе Car были написаны следующие методы мутатора:
- set_driver
- штраф за превышение скорости
- совершать платеж
Концепция инкапсуляции
«Инкапсуляция» - это термин, который используется для описания принципа объектно-ориентированного проектирования, когда компоненты программы не должны раскрывать внутренние детали их соответствующих реализаций. Чтобы лучше понять концепцию инкапсуляции, см. Наши статья по инкапсуляции.
Проверка ошибок
Наша реализация класса Car не является надежной, поскольку она может выйти из строя или выйти из строя в зависимости от входных данных, которые он получает от программиста.
Во-первых, обратите внимание, что мы не проверяем типы параметров методов speeding_ticket и make_payment, а также не проверяем типы каких-либо параметров конструктора. Это может привести к сбою программы, если пользователь предоставит неожиданный аргумент. Например, если пользователь выполняет такой вызов, как speeding_ticket («Chips ahoy»), программа вылетает из строя, потому что тип, который ожидал метод, был целым числом, а не строкой.
Теперь вы понимаете основы работы с классами Python
В этой статье вы познакомились с концепцией класса Python и объекта класса Python. Вы также познакомились с идеями, на основе которых построен класс Python, такими как: инкапсуляция, «собственный» идентификатор, методы доступа и методы мутатора.
Обладая этой информацией, вы сможете самостоятельно создать простой класс Python и протестировать его :)
Теперь вам нужно будет подтвердить свою личность через мобильное устройство, чтобы связать свою учетную запись на рабочем столе и в веб-приложении.
- Программирование
- Python
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!
Еще один шаг…!
Пожалуйста, подтвердите свой адрес электронной почты в электронном письме, которое мы вам только что отправили.