Python: Классы и объекты (Урок 10)

Объектно-ориентированное программирование

Объектно-ориентированное программирование (ООП) — это парадигма программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса. Проще говоря, в ООП сначала описываются классы, представляющие реально существующие сущности со своими признаками и свойствами, а затем создаются объекты на основе этих описаний. Класс определяет общее поведение для категории объектов, позволяя классифицировать и группировать их по общим свойствам.

Например, архитектор, проектируя микрорайон одинаковых пятиэтажных домов, создает чертеж (класс). Каждый построенный дом (объект) соответствует этому чертежу, отличаясь лишь, например, номером. Чертеж описывает свойства домов, а сами дома — это экземпляры класса, созданные на основе этого чертежа.

Создание класса

Для создания класса в 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: создание классов, создание объектов, использование атрибутов по умолчанию и наследование. Эти концепции являются фундаментальными для объектно-ориентированного программирования и позволяют создавать более структурированный и понятный код.

Что будем искать? Например,программа