Классы и объекты в Python
В предыдущем руководстве мы изучили Объектно-ориентированное программирование в Python. Мы знаем, что Python также поддерживает концепцию объектов и классов.
Объект — это просто набор данных (переменных) и методов (функций). Аналогично, класс — это чертёж для этого объекта.
Прежде чем мы узнаем об объектах, давайте сначала узнаем о классах в Python.
Классы Python
Класс считается чертежом объектов.
Мы можем думать о классе как о схеме (прототипе) дома. Он содержит все детали об этажах, дверях, окнах и т.д.
На основе этих описаний мы строим дом; дом — это объект.
Поскольку из одного и того же описания можно построить много домов, мы можем создать много объектов из класса.
Определение класса Python
Мы используем ключевое слово class для создания класса в Python. Например:
class ClassName:
# class definition
Здесь мы создали класс с именем ClassName.
Рассмотрим пример:
class Bike:
name = ""
gear = 0
Здесь:
Bike— имя классаname/gear— переменные внутри класса со значениями по умолчанию""и 0 соответственно.
Примечание
Переменные внутри класса называются атрибутами.
Объекты Python
Объект называется экземпляром класса.
Предположим, Bike — это класс, тогда мы можем создавать объекты, такие как bike1, bike2 и т.д. из класса.
Синтаксис для создания объекта:
objectName = ClassName()
Пример:
# create class
class Bike:
name = ""
gear = 0
# create objects of class
bike1 = Bike()
Здесь bike1 — это объект класса. Теперь мы можем использовать этот объект для доступа к атрибутам класса.
Доступ к атрибутам класса через объекты
Мы используем нотацию . для доступа к атрибутам класса. Например:
# modify the name property
bike1.name = "Mountain Bike"
# access the gear property
bike1.gear
Здесь мы использовали bike1.name и bike1.gear для изменения и доступа к значению атрибутов name и gear соответственно.
Пример 1: Класс и объекты Python
# define a class
class Bike:
name = ""
gear = 0
# create object of class
bike1 = Bike()
# access attributes and assign new values
bike1.gear = 11
bike1.name = "Mountain Bike"
print(f"Name: {bike1.name}, Gears: {bike1.gear} ")
Вывод
Name: Mountain Bike, Gears: 11
В приведённом выше примере мы определили класс с именем Bike с двумя атрибутами: name и gear.
Мы также создали объект bike1 класса Bike.
Наконец, мы получили доступ и изменили свойства объекта, используя нотацию ..
Создание нескольких объектов класса Python
Мы также можем создавать несколько объектов из одного класса. Например:
# define a class
class Employee:
# define a property
employee_id = 0
# create two objects of the Employee class
employee1 = Employee()
employee2 = Employee()
# access property using employee1
employee1.employeeID = 1001
print(f"Employee ID: {employee1.employeeID}")
# access properties using employee2
employee2.employeeID = 1002
print(f"Employee ID: {employee2.employeeID}")
Вывод
Employee ID: 1001
Employee ID: 1002
В приведённом выше примере мы создали два объекта employee1 и employee2 класса Employee.
Методы Python
Мы также можем определить функцию внутри класса Python. Функция Python, определённая внутри класса, называется методом.
Рассмотрим пример:
# create a class
class Room:
length = 0.0
breadth = 0.0
# method to calculate area
def calculate_area(self):
print("Area of Room =", self.length * self.breadth)
# create object of Room class
study_room = Room()
# assign values to all the properties
study_room.length = 42.5
study_room.breadth = 30.8
# access method inside class
study_room.calculate_area()
Вывод
Area of Room = 1309.0
В приведённом выше примере мы создали класс с именем Room с:
Атрибуты: length и breadth
Метод:
calculate_area()
Здесь мы создали объект study_room из класса Room.
Затем мы использовали объект для присвоения значений атрибутам: length и breadth.
Обратите внимание, что мы также использовали объект для вызова метода внутри класса:
study_room.calculate_area()
Здесь мы использовали нотацию . для вызова метода. Наконец, выполняется оператор внутри метода.
Конструкторы Python
Ранее мы присвоили значение по умолчанию атрибуту класса:
class Bike:
name = ""
...
# create object
bike1 = Bike()
Однако мы также можем инициализировать значения с помощью конструкторов. Например:
class Bike:
# constructor function
def __init__(self, name = ""):
self.name = name
bike1 = Bike()
Здесь __init__() — это функция-конструктор, которая вызывается всякий раз, когда создаётся новый объект этого класса.
Конструктор выше инициализирует значение атрибута name.
Мы использовали self.name для ссылки на атрибут name объекта bike1.
Если мы используем конструктор для инициализации значений внутри класса, нам нужно передать соответствующее значение при создании объекта класса.
bike1 = Bike("Mountain Bike")
Здесь "Mountain Bike" передаётся параметру name функции __init__().
Смотрите также: