Основы ООП

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


Классы и объекты

Класс

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

Создадим новый файл, назовём его Dog.py

# Пример определения класса class Dog: # Атрибуты класса breed = "Дворняга" # Порода собаки # Метод __init__ (конструктор) def __init__(self, name, age): # Задаём свойства self.name = name # Атрибут объекта (Имя собаки) self.age = age # Атрибут объекта (Возраст собаки) # Метод объекта (возвожность гавкать) def bark(self): return f"{self.name} says woof!"

Зачем нужен новый файл?
- Для лучшей читабельности, желательно называть файлы так-же, как и класс, который определён внутри файла.
Далее я буду следовать некоторым принципам:
1) название файла = название класса
2) название файла с классом всегда с большой буквы
3) один класс = один файл
- запомните эти три важных правила хорошего тона!
Следовать этим правилас не обязательно, но поверьте, так будет проще ориентироваться в программе!

Объект

Объект — это экземпляр класса. Каждый объект имеет свои собственные атрибуты и может вызывать методы, определенные в классе.

# Создание объектов (экземпляров класса) dog1 = Dog("Buddy", 3) dog2 = Dog("Max", 5) # Доступ к атрибутам объекта print(dog1.name) # Вывод: Buddy print(dog2.age) # Вывод: 5 # Вызов метода объекта print(dog1.bark()) # Вывод: Buddy says woof!

Атрибуты

Атрибуты — это переменные, которые принадлежат классу или объекту. Они хранят данные, связанные с классом или объектом.

Атрибуты класса

Атрибуты класса являются общими для всех объектов этого класса. Они определяются внутри класса, но вне методов.

class Dog: breed = "Дворняга" # Атрибут класса def __init__(self, name, age): self.name = name # Атрибут объекта self.age = age # Атрибут объекта
Атрибуты объекта

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

dog1 = Dog("Buddy", 3) dog2 = Dog("Max", 5) print(dog1.name) # Вывод: Buddy print(dog2.name) # Вывод: Max

Методы

Методы — это функции, определенные внутри класса. Они описывают поведение объектов.

Метод __init__

Метод __init__ — это конструктор, который автоматически вызывается при создании объекта. Он используется для инициализации атрибутов объекта.

class Dog: def __init__(self, name, age): self.name = name self.age = age
Обычные методы

Обычные методы определяют поведение объектов. Они принимают параметр self, который ссылается на текущий объект.

class Dog: def __init__(self, name, age): self.name = name self.age = age def bark(self): return f"{self.name} says woof!"
Статические методы

Статические методы не принимают параметр self и не зависят от объекта. Они вызываются через класс и используются для выполнения задач, связанных с классом, но не с конкретным объектом.

class Dog: @staticmethod def info(): print("This is a Dog class.") Dog.info() # This is a Dog class.

Обратите внимание, метод info() был вызван у класса Dog, а не у объекта.

Методы класса

Методы класса принимают параметр cls, который ссылается на класс.
Они используются для работы с атрибутами класса.

class Dog: breed = "Дворняга" @classmethod def get_species(cls): print(cls.breed) Dog.get_species() # Дворняга

Пример использования ООП

Опишем автомобиль class Car и создадим парочку автомобилей по нашему описанию car1, car2.

class Car: # Атрибут класса wheels = 4 # Конструктор def __init__(self, brand, model, year): self.brand = brand # Атрибут объекта self.model = model # Атрибут объекта self.year = year # Атрибут объекта # Метод объекта def start_engine(self): return f"{self.brand} {self.model}'s engine is running." # Статический метод @staticmethod def is_vintage(year): return year < 1990 # Метод класса @classmethod def get_wheels(cls): return cls.wheels # Создание объектов car1 = Car("Toyota", "Corolla", 2020) car2 = Car("Ford", "Mustang", 1967) # Доступ к атрибутам print(car1.brand) # Вывод: Toyota print(car2.year) # Вывод: 1967 # Вызов методов print(car1.start_engine()) # Вывод: Toyota Corolla's engine is running. print(car2.start_engine()) # Вывод: Ford Mustang's engine is running. # Использование статического метода print(Car.is_vintage(1985)) # Вывод: True # Использование метода класса print(Car.get_wheels()) # Вывод: 4

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

Не забывайте практиковаться для лучшего усвоения материала. Решать задачи.


Комментарии

Добавить комментарий

Чтобы оставить комменатрий необходимо Авторизоваться