Основы классов и объектов в Python: создание пользовательских типов данных и работа с их свойствами и методами.

онлайн тренажер по питону
Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Самоучитель Python 3, собранный из материалов данного сайта.Предназначен в основном для тех, кто хочет изучить язык программирования Python с нуля.

Что такое класс в Python?

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

Синтаксис объявления класса

Класс объявляется с использованием ключевого слова class, за которым следует имя класса. По соглашению PEP 8, имя класса должно начинаться с заглавной буквы и использовать стиль CamelCase:

class ClassName:
    # Тело класса
    pass

Конструктор класса init()

Конструктор __init__() - это специальный метод, который автоматически вызывается при создании нового объекта класса. Он используется для инициализации атрибутов объекта:

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        return "Woof!"

Создание объектов (экземпляров класса)

Объекты создаются путем вызова класса как функции. При этом автоматически вызывается метод __init__():

# Создание объекта класса Dog
my_dog = Dog("Buddy", 3)

# Доступ к атрибутам объекта
print(my_dog.name)  # Вывод: Buddy
print(my_dog.age)   # Вывод: 3

# Вызов метода объекта
print(my_dog.bark())  # Вывод: Woof!

Атрибуты и методы класса

Атрибуты экземпляра

Атрибуты экземпляра - это переменные, которые принадлежат конкретному объекту класса. Они определяются внутри метода __init__() с использованием ключевого слова self:

class Person:
    def __init__(self, name, age):
        self.name = name  # атрибут экземпляра
        self.age = age    # атрибут экземпляра

    def say_hello(self):
        return f"Привет, меня зовут {self.name}, мне {self.age} лет"

Методы экземпляра

Методы экземпляра - это функции, определенные внутри класса, которые работают с конкретным объектом. Первым параметром всегда передается self - ссылка на текущий объект:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print(f"Привет, меня зовут {self.name}, мне {self.age} лет")

    def have_birthday(self):
        self.age += 1
        print(f"С днем рождения! Теперь мне {self.age} лет")

# Создание объекта и использование методов
person1 = Person("Анна", 25)
person1.say_hello()  # Вывод: Привет, меня зовут Анна, мне 25 лет
person1.have_birthday()  # Вывод: С днем рождения! Теперь мне 26 лет

Практические примеры использования классов

Пример 1: Класс для представления автомобиля

class Car:
    def __init__(self, make, model, year, mileage=0):
        self.make = make
        self.model = model
        self.year = year
        self.mileage = mileage
        self.is_running = False

    def start_engine(self):
        if not self.is_running:
            self.is_running = True
            return f"{self.make} {self.model} заведен"
        return "Двигатель уже работает"

    def stop_engine(self):
        if self.is_running:
            self.is_running = False
            return f"{self.make} {self.model} заглушен"
        return "Двигатель уже заглушен"

    def drive(self, distance):
        if self.is_running:
            self.mileage += distance
            return f"Проехали {distance} км. Общий пробег: {self.mileage} км"
        return "Сначала заведите двигатель"

    def display_info(self):
        status = "работает" if self.is_running else "заглушен"
        return f"{self.year} {self.make} {self.model} (пробег: {self.mileage} км, двигатель {status})"

# Создание и использование объектов
car1 = Car("Toyota", "Camry", 2020)
car2 = Car("Honda", "Civic", 2019, 15000)

print(car1.display_info())  # 2020 Toyota Camry (пробег: 0 км, двигатель заглушен)
print(car1.start_engine())  # Toyota Camry заведен
print(car1.drive(100))      # Проехали 100 км. Общий пробег: 100 км

Пример 2: Класс для банковского счета

class BankAccount:
    def __init__(self, account_number, owner_name, initial_balance=0):
        self.account_number = account_number
        self.owner_name = owner_name
        self.balance = initial_balance

    def deposit(self, amount):
        if amount > 0:
            self.balance += amount
            return f"Пополнение на {amount} руб. Баланс: {self.balance} руб."
        return "Сумма пополнения должна быть положительной"

    def withdraw(self, amount):
        if amount > 0:
            if amount <= self.balance:
                self.balance -= amount
                return f"Снято {amount} руб. Баланс: {self.balance} руб."
            return "Недостаточно средств на счете"
        return "Сумма снятия должна быть положительной"

    def get_balance(self):
        return f"Баланс счета {self.account_number}: {self.balance} руб."

# Использование класса
account = BankAccount("123456789", "Иван Иванов", 1000)
print(account.get_balance())  # Баланс счета 123456789: 1000 руб.
print(account.deposit(500))   # Пополнение на 500 руб. Баланс: 1500 руб.
print(account.withdraw(200))  # Снято 200 руб. Баланс: 1300 руб.

Преимущества использования классов в Python

  1. Инкапсуляция: Данные и методы объединены в одном месте
  2. Переиспользование кода: Один класс может создавать множество объектов
  3. Модульность: Классы помогают структурировать код
  4. Абстракция: Сложная логика скрыта за простым интерфейсом
  5. Наследование: Возможность создавать новые классы на основе существующих

Основные термины

  • Класс - шаблон для создания объектов
  • Объект (экземпляр) - конкретная реализация класса
  • Атрибут - переменная, принадлежащая объекту
  • Метод - функция, принадлежащая классу
  • Конструктор - метод __init__() для инициализации объекта
  • self - ссылка на текущий объект

Классы в Python предоставляют мощный инструмент для создания структурированного и переиспользуемого кода. Они позволяют моделировать реальные сущности и их взаимодействие, что делает программы более понятными и легкими в сопровождении.

 

категории

  • Введение в Python
  • Основы программирования на Python
  • Управляющие конструкции
  • Структуры данных
  • Функции и модули
  • Обработка исключений
  • Работа с файлами и потоками
  • файловая система
  • Объектно-ориентированное программирование (ООП)
  • Регулярные выражения
  • Дополнительные темы
  • Общая база питона