Метод-конструктор (__init__)
Часть раздела Object Oriented Programming путешествия по Python на Coddy — урок 7 из 64.
Метод __init__ — это специальный метод, который автоматически запускается при создании нового объекта. Он инициализирует атрибуты объекта.
Вот пример класса с конструктором:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breedМетод __init__ принимает параметры и присваивает их атрибутам экземпляра с помощью self.
Создавайте объекты с помощью конструктора:
rex = Dog("Rex", "German Shepherd")
buddy = Dog("Buddy", "Golden Retriever")Когда вы вызываете Dog("Rex", "German Shepherd"), Python автоматически вызывает __init__ и передает аргументы.
Получите доступ к атрибутам, которые были установлены конструктором:
print(rex.name)
print(rex.breed)
print(buddy.name)
print(buddy.breed)Вывод:
Rex
German Shepherd
Buddy
Golden RetrieverВы также можете создать конструктор со значениями по умолчанию:
class Cat:
def __init__(self, name, age=1):
self.name = name
self.age = age
# Создаем кошек
fluffy = Cat("Fluffy", 3)
whiskers = Cat("Whiskers") # age по умолчанию равно 1
print(f"{fluffy.name} is {fluffy.age} years old")
print(f"{whiskers.name} is {whiskers.age} years old")Вывод:
Fluffy is 3 years old
Whiskers is 1 years oldКлючевой момент: метод __init__ гарантирует, что каждый объект правильно настраивается со своими начальными данными при создании. Это избавляет вас от необходимости вручную устанавливать атрибуты после создания объекта.
Задание
ЛегкоВам предоставлены файлы Python (book.py и driver.py) для реализации системы управления книгами. В этом задании вы определите класс Book в одном файле, который будет импортирован и использован в другом.
Ваша задача:
- Завершить класс
Bookвbook.py, добавив метод__init__, который инициализирует атрибутыtitle,authorиpages - Файл
driver.pyбудет импортировать и использовать ваш классBookдля создания объекта книги для"Harry Potter"автора"J.K. Rowling"с400страницами
Следуйте подробным комментариям TODO в файле book.py.
Шпаргалка
Метод __init__ — это конструктор, который автоматически запускается при создании нового объекта для инициализации его атрибутов:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breedСоздавайте объекты, вызывая класс с аргументами:
rex = Dog("Rex", "German Shepherd")
print(rex.name) # Rex
print(rex.breed) # German ShepherdКонструкторы могут иметь значения параметров по умолчанию:
class Cat:
def __init__(self, name, age=1):
self.name = name
self.age = age
fluffy = Cat("Fluffy", 3)
whiskers = Cat("Whiskers") # age defaults to 1Попробуйте сами
# TODO: Импортируйте класс Book из book.py
# Используйте этот формат: from book import Book
# TODO: Создайте объект книги с именем 'my_book' со следующими значениями:
# - title: "Harry Potter"
# - author: "J.K. Rowling"
# - pages: 400
# Пример: my_book = Book("Title", "Author", pages)
# Вывести информацию о книге
# TODO: Убедитесь, что my_book правильно определен перед выполнением этой строки
print(f"'{my_book.title}' by {my_book.author}, {my_book.pages} pages")В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Object Oriented Programming
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыПараметр selfМетодыАтрибутыМетод-конструктор (__init__)Повторение — Простой калькулятор4Наследование
Базовое наследованиеФункция super()Переопределение методовМножественное наследованиеПорядок разрешения методовИтоги — Иерархия сотрудников7Специальные методы
Введение в магические методыПерегрузка операторовМагические методы контейнеровПовторение — Пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн Strategy5Полиморфизм
Снова о переопределении методовУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовИтоги — Калькулятор фигур8Продвинутые концепции ООП
Композиция против наследованияМиксиныСтатические методы и методы классаДекораторы классовМенеджеры контекста11Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн Компоновщик3Свойства классов
Переменные экземпляра и классаДекораторы свойствПриватные атрибутыИтоги — Менеджер банковского счета6Инкапсуляция
Public, Protected, Private члены классаМодификаторы доступаСокрытие данныхДекораторы property: продвинутый уровеньИтоги: Система учета студентов12Проект: Управление библиотекой
Обзор проектаКлассы Book и User