что значит init в python

Использование метода __init__

Давайте поговорим о методе __init__ и для чего он используется в Python.

Введение

Когда вы создаете новый класс в Python, первым методом, который вы, скорее всего, создадите, будет метод __init__.

Метод __init__ позволяет принимать аргументы для вашего класса.

Что еще более важно, метод __init__ дает возможность назначать начальные значения различным атрибутам экземпляров класса.

Более подробно ознакомиться с классами можно в официальной документации Python.

Возьмем конкретный пример и внимательно его рассмотрим.

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

Создадим класс под названием Test

Я могу построить новый экземпляр этого класса, вызвав его следующим образом:

У нас есть экземпляр класса Test, но этот класс Test на самом деле не имеет точки запуска, потому что он не имеет никакой функциональности (он не хранит никаких полезных данных или не имеет никаких методов).

Я мог бы вручную добавлять атрибуты к экземпляру класса Test, чтобы хранить на них некоторые данные, как показано ниже:

Но делать это было бы немного глупо.

Было бы лучше, если бы мы могли каким-то образом вызвать этот класс с аргументами для автоматического хранения атрибутов.

Использование инициализатора

Теперь, если я попытаюсь вызвать этот класс с аргументами, то мы увидим ошибку:

Чтобы принимать аргументы, нам нужно определить метод __init__ в нашем классе:

Первым аргументом в нашем методе __init__ всегда будет self (как и почти во всех других методах). После этого нам нужно объявить любые аргументы, которые мы хотим, чтобы наш класс принял.

Главное, что вы почти всегда увидите в методе __init__ — это присвоение атрибутов.

Это наш новый класс Point:

Если я назову его так же, как раньше, без каких-либо аргументов, то мы увидим ошибку, потому что этот класс теперь требует двух аргументов — x и y:

Нужно дать нашему классу Test два аргумента, чтобы получить новый экземпляр этого класса:

Этот объект Point теперь имеет атрибут x и атрибут y:

Это означает, что наш метод __init__ был вызван!

Заключение

Всякий раз, когда вы вызываете класс, Python создает новый экземпляр этого класса, а затем вызывает метод __init__ этого класса, передавая вновь созданный экземпляр в качестве первого аргумента self.

В отличие от многих языков программирования, __init__ не называется «Методом конструктора».

Метод __init__ называется «Методом инициализатора». Метод инициализирует наш новый экземпляр класса. Таким образом, к тому моменту, когда метод инициализатора называется экземпляром класса, он уже является построенным.

Источник

Метод конструктора __init__ в Python

«__init__» — зарезервированный метод в классах Python. Он известен как конструктор в концепциях ООП. Этот метод вызывается, когда объект создается из класса, и он позволяет классу инициализировать атрибуты класса.

Как мы можем использовать «__init__»?

Задача функции конструктора класса Python — инициализировать экземпляр класса.

Синтаксис функции Python __init __()

Давайте рассмотрим, что мы создаем класс с именем Car. У автомобиля могут быть такие атрибуты, как «цвет», «модель», «скорость» и т. Д., А также такие методы, как «старт», «ускорение», «переключение передач» и т. Д.

Поэтому мы использовали метод __init__ конструктора для инициализации атрибутов класса.

Примеры

Давайте посмотрим на несколько примеров функции конструктора в разных сценариях.

1. Класс без конструктора

Мы можем создать класс без определения конструктора. В этом случае вызывается конструктор суперкласса для инициализации экземпляра класса. Класс object — это основа всех классов в Python.

Вот еще один пример, подтверждающий, что конструктор суперкласса вызывается для инициализации экземпляра подкласса.

2. Простой конструктор без аргументов

Мы можем создать конструктор без аргументов. Это полезно для целей ведения журнала, таких как подсчет экземпляров класса.

3. Конструктор классов с аргументами

В большинстве случаев вы найдете функцию-конструктор с некоторыми аргументами. Эти аргументы обычно используются для инициализации переменных экземпляра.

4. Конструктор классов с наследованием

5. Цепочка конструкторов с многоуровневым наследованием

6. С множественным наследованием

Мы не можем использовать super() для доступа ко всем суперклассам в случае множественного наследования. Лучшим подходом было бы вызвать функцию конструктора суперклассов, используя их имя класса.

Python не поддерживает несколько конструкторов

Python не поддерживает несколько конструкторов, в отличие от других популярных объектно-ориентированных языков программирования, таких как Java.

Мы можем определить несколько методов __init __(), но последний из них переопределит предыдущие определения.

Может ли функция Python __init __() что-то вернуть?

Если мы попытаемся вернуть значение, отличное от None, из функции __init __(), это вызовет ошибку TypeError.

Если мы изменим оператор return на return None тогда код будет работать без каких-либо исключений.

Источник

init в Python

Давайте посмотрим на короткий фрагмент кода:

Что делает метод инициализации?

Когда создается новый экземпляр класса в python, вызывается метод __init__, который оказывается очень хорошим местом, где мы можем изменить объект после его создания.

Это означает, что когда мы создаем новый экземпляр класса, например:

Является ли __Init__ конструктором?

На самом деле да. __init__ — это конструкция oop. __init__ – это конструктор класса. Как упоминалось выше, метод __init__ вызывается, как только выделяется память для объекта. Посмотрим, что мы сделали выше в нашем фрагменте:

Читайте также:  что делают девочки на уроке труда в 5 классе

Использование self важно, например:

Параметр something будет храниться в переменных в стеке и будет отброшен, как только метод __init__ выйдет за пределы области видимости.

Как __init__ работает с наследованием?

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

В приведенном выше коде, когда мы инициализировали объект Student, это будет результат, который создается при запуске указанной выше программы:

Итак, перед дочерним классом был вызван родительский класс init. Вы можете контролировать это, изменяя порядок, в котором init вызывается для родительского или дочернего класса.

Заключение

Подводя итог, __init__ в python – это то, что называется конструктором в других языках ООП, таких как C ++ и Java. Основная идея заключается в том, что это специальный метод, который автоматически вызывается при создании объекта этого класса.

Источник

Классы, методы Python 3. Примеры ООП (объектно ориентированное программирование)

Объектно-ориентированный Python

Python был объектно-ориентированным языком с момента его появления. Из-за этого создавать и использовать классы и объекты совершенно просто. Эта глава поможет вам стать экспертом в использовании объектно-ориентированного программирования в Python.

Эта статья является кратким введением в объектно-ориентированное программирование (ООП) на Python, которое поможет вам быстро вникнуть в суть и начать решать прикладные задачи.

Краткий обзор ооп python

Программа/скрипт/код, написанные с использованием парадигмы объектно-ориентированного программирования, должны состоять из

Что такое класс в ооп python?

Класс = данные + методы

Класс — это тип данных, состоящий из набора атрибутов (свойств) и методов — функций для работы с этими атрибутами.

Схематично класс можно представить следующим образом:

Для создания классов предусмотрена инструкция class. Тело класса состоит из блока различных инструкций.

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

Атрибуты класса — это имена переменных вне функций и имена функций. Эти атрибуты наследуются всеми объектами, созданными на основе данного класса. Атрибуты обеспечивают свойства и поведение объекта. Объекты могут иметь атрибуты, которые создаются в теле метода, если данный метод будет вызван для конкретного объекта.

Пример класса (ООП) на Python 3:

Результат выполнения скрипта Python 3:

Конструктор класса — метод __init__

Большинство классов имеют специальный метод, который автоматически при создании объекта создает ему атрибуты. Т.е. вызывать данный метод не нужно, т.к. он сам запускается при вызове класса. (Вызов класса происходит, когда создается объект.)

Такой метод называется конструктором класса и в языке программирования Python носит имя __init__. (В начале и конце по два знака подчеркивания.)

Первым параметром, как и у любого другого метода, у __init__ является self, на место которого подставляется объект в момент его создания. Второй и последующие (если есть) параметры заменяются аргументами, переданными в конструктор при вызове класса. Рассмотрим два класса: в одном будет использоваться конструктор, а в другом нет. Требуется создать два атрибута объекта.

Рассмотрим два класса: в одном будет использоваться конструктор, а в другом нет. Требуется создать два атрибута объекта.

Пример 1:

Пример 2:

Результат выполнения двух скриптов:

Что значит аргумент self в Python 3 в методе класса

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

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

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

С другой стороны, вызов метода для конкретного объекта в основном блоке программы выглядит следующим образом:

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

Т.е. конкретный объект подставляется вместо параметра self

Объектно-ориентированное программирование Python 3. Классы, объекты, экземпляры, методы

Принципы ООП

Объектно-ориентированный язык работает по следующим принципам:

Идеи/принципы объектно-ориентированного программирования:

Преимущества ООП

В связи со своими особенностями объектно-ориентированное программирование имеет ряд преимуществ перед структурным (и др.) программированием. Выделим некоторые из них:

Особенность ООП

ООП позволяет сократить время на написание исходного кода, однако ООП всегда предполагает большую роль предварительного анализа предметной области, предварительного проектирования. От правильности решений на этом предварительном этапе зависит куда больше,чем от непосредственного написания исходного кода.

Особенности ООП в Python

По сравнению с другими распространенными языками программирования у Python можно выделить следующие особенности, связанные с объектно-ориентированным программированием:

Обзор терминологии ООП

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

Оператор класса создает новое определение класса. Имя класса следует сразу за ключевым словом class, за которым следует двоеточие:

Пример

Ниже приведен пример простого класса Python

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

Доступ к атрибутам

Вы получаете доступ к атрибутам объекта, используя оператор точки с объектом. Переменная класса будет доступна с использованием имени класса следующим образом:

Читайте также:  что можно делать ручным отпаривателем

Теперь, объединяя все концепции

Когда приведенный выше код выполняется, он дает следующий результат

Вы можете добавлять, удалять или изменять атрибуты классов и объектов в любое время

Вместо использования обычных операторов для доступа к атрибутам, вы можете использовать следующие функции:

Встроенные атрибуты класса

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

Для приведенного выше класса давайте попробуем получить доступ ко всем этим атрибутам

Когда приведенный выше код выполняется, он дает следующий результат

Уничтожение объектов (Сборка мусора)

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

Сборщик мусора в Python запускается во время выполнения программы и запускается, когда счетчик ссылок на объект достигает нуля. Количество ссылок объекта изменяется по мере изменения количества псевдонимов, которые на него указывают.

Пример

Этот деструктор __del __ () печатает имя класса экземпляра, который должен быть уничтожен

Когда приведенный выше код выполняется, он дает следующий результат

Наследование классов

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

Дочерний класс наследует атрибуты своего родительского класса, и вы можете использовать эти атрибуты, как если бы они были определены в дочернем классе. Дочерний класс также может переопределять элементы данных и методы родительского класса.

Синтаксис

Производные классы объявляются так же, как их родительский класс; однако список базовых классов для наследования дается после имени класса

Пример

Когда приведенный выше код выполняется, он дает следующий результат

Аналогичным образом вы можете управлять классом из нескольких родительских классов следующим образом:

Вы можете использовать функции issubclass () или isinstance (), чтобы проверить отношения двух классов и экземпляров.

Переопределяющие методы

Вы всегда можете переопределить ваши родительские методы класса. Одна из причин переопределения родительских методов заключается в том, что вам может потребоваться особая или другая функциональность в вашем подклассе.

Пример

Когда приведенный выше код выполняется, он дает следующий результат

Базовые методы перегрузки

В следующей таблице перечислены некоторые общие функции, которые вы можете переопределить в своих собственных классах.

Sr.No. Метод, описание и пример вызова
1 __init__ (self [, args …])

Конструктор (с любыми необязательными аргументами)

Пример вызова: obj = className (args)

2 __del __ (самостоятельно)

Деструктор, удаляет объект

Образец звонка: del obj

3 __repr __ (самостоятельно)

Оцениваемое строковое представление

Пример вызова: repr (obj)

4 __str __ (самостоятельно)

Печатное представление строки

Пример вызова: str (obj)

5 __cmp__ (self, x)

Пример вызова: cmp (obj, x)

Операторы перегрузки

Предположим, что вы создали класс Vector для представления двумерных векторов. Что произойдет, когда вы добавите оператор «плюс»? Скорее всего, Python будет кричать на вас.

Однако вы можете определить метод __add__ в вашем классе для выполнения сложения векторов, и тогда оператор плюс будет вести себя так, как ожидалось:

пример

Когда приведенный выше код выполняется, он дает следующий результат

Скрытие данных

Атрибуты объекта могут или не могут быть видны вне определения класса. Вам необходимо присвоить имена атрибутам с двойным префиксом подчеркивания, и тогда эти атрибуты не будут напрямую видны посторонним.

пример

Когда приведенный выше код выполняется, он дает следующий результат

Когда приведенный выше код выполняется, он дает следующий результат

Источник

Что такое __init__ в Python?

Чтение по сравнению с другими людьми Python Code, начинающие часто спотыкаются над методом __init __ (Self). Какова его цель? Эта статья отвечает на этот вопрос один раз и для всех.

При чтении кода Python других людей многие новички озадачены __init __ (Я) метод. Какова его цель? Эта статья отвечает на этот вопрос один раз и для всех.

Какова цель __само по себе) в Python?

Зарезервированный метод Python __init __ () называется Конструктор класса. Вы можете вызвать метод конструктора для создания объекта) из класса и инициализировать его атрибуты.

Хотя это отвечает на вопрос, если у вас есть какие-либо амбиции в становлении профессионального Python Coder, этого недостаточно знать, что __init__ Метод – конструктор класса. Вам также необходимо знать, как использовать конструктор в своих собственных проектах – и как настроить его аргументы. Тщательное понимание конструктора служит сильной основой для более продвинутых концепций в объектно-ориентированном программировании Python. Читайте дальше, чтобы узнать другую половину уравнения.

Интерактивный пример Раньше я объясню это вам, давайте откроем свой разрыв в знании. Рассмотрим следующий пример:

Упражнение : Добавьте один цвет аргумента на __в этом__ Способ и сделайте код выполнения без ошибок!

Давайте погрузимся в этот простой пример значительно детально.

Как использовать метод __init__ на практике? Простой пример

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

Вы узнали, что __init__ Метод – это конструктор метода класса. Вы называете метод конструктора для создания новых экземпляров (или объектов ). Но как именно это играет на практике? Прежде чем мы погрузимся в правильное использование, нам нужно понять Аргументы (или Параметры ) метода конструктора.

Самоустройство

__init__ Конструктор требует хотя бы одного аргумента. Согласно Pep8 Standard Хорошая практика для обозначения этого аргумента как Я Отказ В любом случае, Я Аргумент указывает на вновь созданный сам экземпляр, и он позволяет вам манипулировать атрибутами экземпляра нового экземпляра. В приведении собаки вы бы использовали Self.color Чтобы установить недавно созданную собаку цвет атрибут строке «синий» Отказ

Давайте посмотрим на следующий базовый код примера:

Однако этот минимальный пример нереально. Некоторые собаки коричневые, другие черные, и только некоторые голубые.

Множественные аргументы конструктора

В отличие от первого примера, теперь мы определяем конструктор __init __ (я, цвет) с двумя аргументами, а не один.

Обратите внимание, что Я Аргумент неявно обрабатывается средой программирования Python: Python просто передает ссылку на соответствующую Собака Экземпляр к __init__ конструктор.

В чем разница между конструктором и инициатором?

В чем смысл подчеркивает на имя метода __init__?

Я написал целую статью о значении подчеркивания в Python. Проверьте это, если эта тема интересует вас дальше. Ключевой вынос, однако, следующий:

Двойной подчеркивание «__» (называемое «Dunder» ) используется для создания атрибута экземпляра или метод частным (не может быть доступен из-за пределов класса) – при использовании в качестве ведущего разведения. При использовании в качестве приколного разъема (например, «__init__») это указывает на то, что он является специальным методом в Python (называемый «MAGIC MESTORM»).

Как использовать __init__ в унаследованном классе?

Унаследованный класс – это класс, который наследует все атрибуты и методы из родительского класса. Вот пример:

Наследование очень важно в Python. В примере родительский класс является собакой класса, которую вы уже знаете сверху. Метод инициализатора __init__ определяет цвет этой собаки.

Теперь мы также создаем новый класс Cutedog который наследует все атрибуты из родительского класса Собака Отказ Вы можете определить наследование, указав имя родительского класса в скобках после дочернего класса: Cutedog (Собака) Отказ

Интересная вещь состоит в том, что метод __INIT__ для CuteDog Class CuteDog вызывает метод __init__ из родительского класса. Это имеет смысл, потому что у ребенка класс имеет одинаковые атрибуты, что и родительский класс – и их тоже нужно инициализировать.

Чем больше питоновый способ, однако, это использовать Super () Функция, которая облегчает доступ к родительскому классу:

С помощью Super () Функция, вы можете легко повторно использовать метод инициализатора родительского класса.

Давайте посмотрим на несколько связанных вопросов.

__ in init ___ необходимо в Python?

Нет. Вы можете просто пропустить метод инициализатора. В результате ваш класс не будет иметь никаких атрибутов экземпляра непосредственно после его создания. Тем не менее, вы можете добавить атрибуты экземпляра динамически в любой момент времени. Вот пример:

Как красиво! Вы даже можете создавать пустые классы и «заполнить» методы и атрибуты позже в Python.

Что __ init __ возвращение?

То __в этом__ Сам метод ничего не возвращает. Технически, Python впервые использует метод конструктора Собака() до того, как он использует __в этом__ инициализировать все атрибуты. Следовательно, только конструктор возвращает вновь созданный экземпляр.

Может __init__ вернуть значение?

Нет. Единственное возвращаемое значение, которое не вызывает ошибку времени выполнения Никто Отказ Все остальные значения возврата вызывают ошибку. См. В следующем примере кода:

Поэтому никогда не используйте возвращаемое значение в методе __init__, и вы хорошо пойти.

Куда пойти отсюда?

Спасибо за чтение по всей статье. Вы узнали, что __init__ Имя зарезервировано для метода инициализатора Python, который вызывается внутри конструктора.

Статья требует тщательного понимания оснований Python. Инвестирование времени на изучение и изучение тех, кто имеет жизненно важное значение для вашего успеха в качестве профессионального кодера.

Чтобы помочь людям вырастить свои навыки в автоматизированном виде, я создал бесплатный курс по электронной почте Python «Phython Coffee Rapace», который растут вашим уровнем навыка кажутся непременно. День за днем после дня …

Присоединяйтесь к десяткам тысяч кодов Python (100% бесплатно)!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Источник

Читайте также:  что такое авова в ютубе
Строительный портал