До сих пор мы работали с переменными, функциями, списками и словарями. Но представь, что нужно описать человека: у него есть имя, возраст, рост, цвет волос, и он может ходить, говорить, есть. Как хранить всю эту информацию вместе?
В программировании для этого используется объектно-ориентированное программирование (ООП). ООП позволяет создавать свои типы данных — классы, которые объединяют данные (атрибуты) и действия (методы) в одном месте.
В этом уроке мы научимся создавать классы и объекты, понимать, что такое self, и использовать конструктор __init__.
class.self.__init__ (конструктор).Объектно-ориентированное программирование (ООП) — это способ организации кода, при котором программа состоит из объектов. Каждый объект имеет свои данные (атрибуты) и может выполнять действия (методы).
Представь, что класс — это чертёж или шаблон, а объект — это конкретная вещь, созданная по этому чертежу.
Все автомобили имеют:
Класс Автомобиль — это описание того, что есть у всех автомобилей. А конкретный автомобиль (например, красная Toyota) — это объект этого класса.
classКласс создаётся с помощью ключевого слова class:
class Person:
pass # Пустой классДавай создадим класс Person (Человек):
class Person:
name = "Анна"
age = 15Это класс с атрибутами. Но пока это не очень полезно — у всех объектов будет одно и то же имя и возраст.
selfself — это специальный параметр, который указывает на текущий объект. Когда мы создаём метод класса, первым параметром всегда должен быть self.
class Person:
def introduce(self):
print(f"Привет, я {self.name}")
person = Person()
person.name = "Анна"
person.introduce() # Выведет: Привет, я Анна__init__ (конструктор)__init__ — это специальный метод, который вызывается автоматически при создании объекта. Он называется конструктором.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
print(f"Создан человек: {name}")
person1 = Person("Анна", 15)
person2 = Person("Петя", 16)
Чтобы создать объект класса, нужно вызвать класс как функцию:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# Создаём объекты
person1 = Person("Анна", 15)
person2 = Person("Петя", 16)
print(person1.name) # Анна
Каждый объект имеет свои собственные атрибуты. Изменение атрибутов одного объекта не влияет на другие.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person = Person("Анна", 15)
print(person.name) # Анна
print(person.age) # 15person = Person("Анна", 15)
person.age = 16 # Изменили возраст
print(person.age) # 16person = Person("Анна", 15)
person.city = "Москва" # Добавили новый атрибут
print(person.city) # Москваclass Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print(f"Привет! Меня зовут {self.name}, мне {self.age} лет")
def have_birthday(
Что такое класс в программировании?
Что такое объект (экземпляр класса)?
Что выведет этот код?
class Person:
def __init__(self, name):
self.name = name
person = Person("Анна")
print(person.name)Что выведет этот код?
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person1 = Person("Анна", 15)
person2 = Person("Петя", 16)
print(person1.name)
print(person2Создай класс Car с конструктором, который принимает brand (марка) и color (цвет). Создай объект красной Toyota.
class Car:
def __init__(self, brand, color):
self.brand = brand
self.color = color
car = Car("Toyota", "красная")
print(f"{car.color} {car.brand}")
# Вывод: красная ToyotaДобавь в класс Car метод info(), который выводит информацию о машине.
class Car:
def __init__(self, brand, color):
self.brand = brand
self.color = color
def info(self):
print(f"Машина: {self.color} {self.brand}")
car = Car("Toyota"
self — параметр, который указывает на текущий объект.__init__ — конструктор, который вызывается при создании объекта.person.name).self в методах класса — программа завершится ошибкой или даст неверный результат.: после class — программа завершится ошибкой или даст неверный результат.Создай класс Dog (Собака) с конструктором, который принимает name (имя) и breed (порода). Создай объект собаки по имени "Бобик" породы "Овчарка".
Создай класс Book (Книга) с конструктором, который принимает title (название) и author (автор). Создай два объекта: книгу "Гарри Поттер" автора "Дж. Роулинг" и книгу "Война и мир" автора "Л. Толстой". Выведи информацию о каждой книге.
Создай класс Student (Ученик) с конструктором, который принимает name (имя) и grade (класс). Добавь метод info(), который выводит информацию об ученике в формате: "Ученик: [имя], класс: [класс]". Создай объект и вызови метод info().
Создай класс Rectangle (Прямоугольник) с конструктором, который принимает width (ширина) и height (высота). Добавь метод area(), который вычисляет и возвращает площадь прямоугольника. Создай прямоугольник 5x3 и выведи его площадь.
Создай класс Phone (Телефон) с конструктором, который принимает brand (бренд) и model (модель). Добавь атрибут battery (батарея) со значением 100 в конструкторе. Создай метод info(), который выводит информацию о телефоне и уровне заряда батареи.
Создай класс BankAccount (Банковский счёт) с конструктором, который принимает owner (владелец) и начальный balance (баланс). Добавь метод deposit(amount), который увеличивает баланс на указанную сумму. Создай счёт с начальным балансом 1000, пополни его на 500 и выведи баланс.
Создай класс Circle (Круг) с конструктором, который принимает radius (радиус). Добавь метод area(), который вычисляет площадь круга по формуле π × r² (используй 3.14 для π). Добавь метод circumference(), который вычисляет длину окружности по формуле 2 × π × r. Создай круг с радиусом 5 и выведи его площадь и длину окружности.
Time БОНУССоздай класс Time с атрибутами hours, minutes, seconds. Добавь метод to_seconds(), возвращающий общее количество секунд. Добавь метод add(other), который принимает другой объект Time и возвращает новый Time с суммой времени.
Point БОНУССоздай класс Point с координатами x и y. Добавь метод distance_to(other), который возвращает расстояние до другой точки по формуле √((x₂-x₁)² + (y₂-y₁)²).