Программа курса:
Понятие классов, объектов и экземпляров
.jpg)
Понятие объекта в Python
В объектно-ориентированном программировании (ООП) центральным понятием является объект. В языке Python всё является объектом, будь то числа, строки или структуры данных. Итак, что же такое объект?
С точки зрения ООП, объект — это единица, которая:
- Хранит данные — это его состояние.
- Выполняет действия — это его поведение.
Чтобы проиллюстрировать это, рассмотрим встроенный тип данных list. Создадим объект списка и выполним несколько операций:
my_list = [1, 2, 3]
print(my_list)
my_list.append(5)
print(my_list)
my_list.reverse()
print(my_list)
Вначале создаётся объект списка с данными [1, 2, 3]. Затем, используя метод append(), мы добавляем элемент в конец списка, изменяя его состояние. После этого вызываем метод reverse(), который изменяет порядок элементов. В результате состояние объекта изменяется снова.
Класс
Следующим важным понятием в ООП является класс. Класс определяет свойства и поведение, которые будут характерны для всех его экземпляров.
Классы в программировании можно условно сравнить с классификациями в биологии. Например, в классе "Птицы" объединены различные виды птиц, такие как совы, воробьи и колибри. Каждая птица — это объект класса "Птицы", обладающий определёнными характеристиками, такими как способность летать. Классы помогают разделять объекты по типам, а их поведение определяется методами.
Рассмотрим пример:
hello = "Hello, World!"
hello.append(5) # AttributeError: 'str' object has no attribute 'append'Здесь возникает ошибка, потому что объект строки не имеет метода append. Это ещё раз показывает, что каждый класс имеет свои уникальные методы и атрибуты.
Как связаны объекты и классы
Каждый объект в Python принадлежит определённому классу. Определить класс объекта можно с помощью функции type():
hello = "Hello, World!"
print(type(hello)) # <class 'str'>
my_list = [1, 2, 3]
print(type(my_list)) # <class 'list'>Вы также можете проверить принадлежность объекта к классу с помощью функции isinstance():
print(isinstance(hello, str)) # True
print(isinstance(my_list, list)) # TrueБолее того, в Python все объекты, независимо от их типа, являются экземплярами класса object:
print(isinstance(hello, object)) # True
print(isinstance(my_list, object)) # True
Создание собственных классов
Для создания собственного класса в Python используется ключевое слово class. Рассмотрим пример создания простого класса Car:
class Car:
passВ соответствии с PEP8, имя класса всегда начинается с заглавной буквы. Если имя состоит из нескольких слов, используется стиль написания CamelCase.
Можно добавить строку документации к классу:
class Car:
"Класс, описывающий автомобиль"Теперь мы можем создавать экземпляры этого класса:
a = Car()
b = Car()
print(a, b)
Экземпляры класса
Экземпляр класса — это конкретный объект, созданный на основе класса. Чтобы создать экземпляр, нужно вызвать класс как функцию. Экземпляры можно сохранять в переменные:
a = Car()
b = Car()
print(a, b)
print(type(a))Экземпляры хранятся в памяти как отдельные объекты с уникальными идентификаторами:
print(id(a), id(b)) # Выводит два разных идентификатораВы также можете создать коллекцию экземпляров, например, список:
cars = [Car() for _ in range(5)]
print(cars)
Атрибуты класса
Пока что наш класс Car не содержит никаких данных или поведения. Чтобы добавить данные, мы можем определить атрибуты внутри класса:
class Car:
model = "BMW"
engine = 1.6
Теперь каждый экземпляр класса Car будет иметь атрибуты model и engine:
a = Car()
print(a.model) # Выводит: BMW
print(a.engine) # Выводит: 1.6
Обратите внимание, что на данном этапе все экземпляры будут иметь одинаковые значения атрибутов. Тем не менее, их можно изменить:
b = Car()
b.model = "VAZ"
b.color = "white"
print(b.model, b.color) # Вывод: VAZ white
Теперь экземпляр b имеет изменённое значение атрибута model, а также новый атрибут color, который был добавлен динамически.
Таблица: Основные понятия ООП
| Понятие | Описание | Пример |
|---|---|---|
| Класс | Шаблон или структура, описывающая свойства и поведение объектов. | class Car: |
| Объект | Конкретный экземпляр класса, созданный на его основе. | my_car = Car() |
| Атрибут | Переменные, которые описывают свойства объекта. | Car.model = "BMW" |
| Метод | Функции, которые определяют поведение объектов. | Car.start_engine() |
| Наследование | Способ, с помощью которого один класс может наследовать свойства и методы другого класса. | class ElectricCar(Car): |
| Инкапсуляция | Процесс скрытия деталей реализации объекта, предоставляя только необходимые методы для взаимодействия. | self.__private_method() |
На данном этапе мы рассмотрели базовые понятия классов и объектов, их атрибуты и методы. В дальнейшем, мы углубимся в создание сложных классов с методами и атрибутами, что позволит создавать более гибкие и мощные программы.
Ограниченный доступ
Вы можете только просматривать лекции, так как данный курс является платным. Чтобы получить полный доступ к курсу, приобретите его!