Объектно-ориентированное программирование
Объектно-ориентированное программирование (ООП) — это парадигма программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса. Проще говоря, в ООП сначала описываются классы, представляющие реально существующие сущности со своими признаками и свойствами, а затем создаются объекты на основе этих описаний. Класс определяет общее поведение для категории объектов, позволяя классифицировать и группировать их по общим свойствам.
Например, архитектор, проектируя микрорайон одинаковых пятиэтажных домов, создает чертеж (класс). Каждый построенный дом (объект) соответствует этому чертежу, отличаясь лишь, например, номером. Чертеж описывает свойства домов, а сами дома — это экземпляры класса, созданные на основе этого чертежа.
Создание класса
Для создания класса в Python используется ключевое слово class, за которым следует имя класса. Рассмотрим пример класса House (дом):
class House:
"""Описание дома."""
def __init__(self, street, number):
"""Инициализация свойств дома."""
self.street = street
self.number = number
def build(self):
"""Строит дом."""
print(f"Дом на улице {self.street} под номером {self.number} построен.")
- __init__(self, street, number) — метод инициализации (конструктор). Аргумент self — ссылка на экземпляр класса. В этом методе инициализируются свойства объекта: street (улица) и number (номер дома).
- build() — метод, выводящий сообщение о строительстве дома.
Создание объектов и обращение к атрибутам
Объекты создаются вызовом класса как функции с передачей необходимых аргументов:
house1 = House("Московская", "20")
house2 = House("Московская", "21")
house1 и house2 — объекты класса House. К их свойствам и методам можно обращаться через точку:
print(house1.street) # Выведет: Московская
print(house2.number) # Выведет: 21
house1.build() # Выведет: Дом на улице Московская под номером 20 построен.
Атрибуты по умолчанию и их изменение
Атрибуты (свойства) можно задавать со значениями по умолчанию внутри класса:
class House:
def __init__(self, street, number):
self.street = street
self.number = number
self.age = 0 # Возраст дома по умолчанию
def set_age(self, year):
"""Устанавливает возраст дома."""
self.age += year
print(f"Возраст дома: {self.age} лет")
age устанавливается в 0 по умолчанию. Метод set_age позволяет изменить это значение.
Наследование
Наследование позволяет создавать новые классы на основе существующих (родительских). Новый класс (потомок) наследует все атрибуты и методы родительского класса, но может добавлять свои собственные или переопределять существующие.
Например, создадим класс ProspectHouse (дом на проспекте), наследующий от класса House:
class ProspectHouse(House):
"""Дома на проспекте."""
def __init__(self, prospect, number):
super().__init__(prospect, number) # Вызов метода __init__ родительского класса
self.prospect = prospect
prospect_house = ProspectHouse("Ленина", "5")
print(prospect_house.prospect) # Выведет: Ленина
ProspectHouse наследует все из House и добавляет свойство prospect. super().__init__(prospect, number) вызывает конструктор родительского класса.
В этом уроке изучены основы классов и объектов в Python: создание классов, создание объектов, использование атрибутов по умолчанию и наследование. Эти концепции являются фундаментальными для объектно-ориентированного программирования и позволяют создавать более структурированный и понятный код.