«__init__» — зарезервированный метод в классах Python. Он известен как конструктор в концепциях ООП. Этот метод вызывается, когда объект создается из класса, и он позволяет классу инициализировать атрибуты класса.
Как мы можем использовать «__init__»?
Задача функции конструктора класса Python — инициализировать экземпляр класса.
Синтаксис функции Python __init __()
def __init__(self, [arguments])
- Ключевое слово def используется для его определения, потому что это функция.
- Первый аргумент относится к текущему объекту. Он связывает экземпляр с методом init(). Обычно его называют «я», чтобы следовать соглашению об именах. Вы можете узнать больше об этом в собственной переменной Python.
- Аргументы метода init() необязательны. Мы можем определить конструктор с любым количеством аргументов.
Давайте рассмотрим, что мы создаем класс с именем Car. У автомобиля могут быть такие атрибуты, как «цвет», «модель», «скорость» и т. Д., А также такие методы, как «старт», «ускорение», «переключение передач» и т. Д.
Пакеты в Python. Файл __init__, переменная __all__
class Car(object): def __init__(self, model, color, speed): self.color = color self.speed = speed self.model = model def start(self): print(«started») def accelerate(self): print(«accelerating. «) def change_gear(self, gear_type): print(«gear changed»)
Поэтому мы использовали метод __init__ конструктора для инициализации атрибутов класса.
Примеры
Давайте посмотрим на несколько примеров функции конструктора в разных сценариях.
1. Класс без конструктора
init в Python
Когда создается новый экземпляр класса в python, вызывается метод __init__, который оказывается очень хорошим местом, где мы можем изменить объект после его создания.
Это означает, что когда мы создаем новый экземпляр класса, например:
my_object = Student(‘Jetty’)
Является ли __Init__ конструктором?
На самом деле да. __init__ — это конструкция oop. __init__ – это конструктор класса. Как упоминалось выше, метод __init__ вызывается, как только выделяется память для объекта. Посмотрим, что мы сделали выше в нашем фрагменте:
def __init__(self, something): self.something = something
Использование self важно, например:
def __init__(self, something): _something = something
Параметр something будет храниться в переменных в стеке и будет отброшен, как только метод __init__ выйдет за пределы области видимости.
Как __init__ работает с наследованием?
Когда у нас есть класс, наследующий от суперкласса, метод __init__ работает таким же образом. Давайте попробуем продемонстрировать, что происходит, когда мы пытаемся инициализировать дочерний класс:
class User(object): def __init__(self, something): print(«User Init called.») self.something = something def method(self): return self.something class Student(User): def __init__(self, something): User.__init__(self, something) print(«Student Init called.») self.something = something def method(self): return self.something my_object = Student(‘Jetty’)
В приведенном выше коде, когда мы инициализировали объект Student, это будет результат, который создается при запуске указанной выше программы:
ООП 6 Инициализация объекта. Метод init . Объектно-ориентированное программирование в Python.
Итак, перед дочерним классом был вызван родительский класс init. Вы можете контролировать это, изменяя порядок, в котором init вызывается для родительского или дочернего класса.
Заключение
Подводя итог, __init__ в python – это то, что называется конструктором в других языках ООП, таких как C ++ и Java. Основная идея заключается в том, что это специальный метод, который автоматически вызывается при создании объекта этого класса.
Источник: pythonim.ru
Использование метода __init__
Давайте поговорим о методе __init__ и для чего он используется в Python.
Введение
Когда вы создаете новый класс в Python, первым методом, который вы, скорее всего, создадите, будет метод __init__.
Метод __init__ позволяет принимать аргументы для вашего класса.
Что еще более важно, метод __init__ дает возможность назначать начальные значения различным атрибутам экземпляров класса.
Более подробно ознакомиться с классами можно в официальной документации Python.
Возьмем конкретный пример и внимательно его рассмотрим.
Создание класса
Создадим класс под названием Test
class Test: «»» Тестируем работу метода __init__ «»»
Я могу построить новый экземпляр этого класса, вызвав его следующим образом:
class Test: «»» Тестируем работу метода __init__ «»» t = Test() print(t)
У нас есть экземпляр класса Test, но этот класс Test на самом деле не имеет точки запуска, потому что он не имеет никакой функциональности (он не хранит никаких полезных данных или не имеет никаких методов).
Я мог бы вручную добавлять атрибуты к экземпляру класса Test, чтобы хранить на них некоторые данные, как показано ниже:
class Test: «»» Тестируем работу метода __init__ «»» t = Test() t.x = 1 t.y = 0 print(t.x) print(t.y)
Но делать это было бы немного глупо.
Было бы лучше, если бы мы могли каким-то образом вызвать этот класс с аргументами для автоматического хранения атрибутов.
Использование инициализатора
Теперь, если я попытаюсь вызвать этот класс с аргументами, то мы увидим ошибку:
class Test: «»» Тестируем работу метода __init__ «»» t = Test(1, 0)
Traceback (most recent call last): File «/Users/krnlnx/Projects/Test/init.py», line 7, in t = Test(1, 0) TypeError: Test() takes no arguments
Чтобы принимать аргументы, нам нужно определить метод __init__ в нашем классе:
def __init__(self, x, y): self.x = x self.y = y
Первым аргументом в нашем методе __init__ всегда будет self (как и почти во всех других методах). После этого нам нужно объявить любые аргументы, которые мы хотим, чтобы наш класс принял.
Главное, что вы почти всегда увидите в методе __init__ — это присвоение атрибутов.
Это наш новый класс Point:
class Test: «»» Тестируем работу метода __init__ «»» def __init__(self, x, y): self.x = x self.y = y
Если я назову его так же, как раньше, без каких-либо аргументов, то мы увидим ошибку, потому что этот класс теперь требует двух аргументов — x и y:
class Test: «»» Тестируем работу метода __init__ «»» def __init__(self, x, y): self.x = x self.y = y t = Test()
Traceback (most recent call last): File «/Users/krnlnx/Projects/Test/init.py», line 11, in t = Test() TypeError: init() missing 2 required positional arguments: ‘x’ and ‘y’
Нужно дать нашему классу Test два аргумента, чтобы получить новый экземпляр этого класса:
class Test: «»» Тестируем работу метода __init__ «»» def __init__(self, x, y): self.x = x self.y = y t = Test(1, 0)
Этот объект Point теперь имеет атрибут x и атрибут y:
>> t.x 1 >> t.y 0
Это означает, что наш метод __init__ был вызван!
Заключение
Всякий раз, когда вы вызываете класс, Python создает новый экземпляр этого класса, а затем вызывает метод __init__ этого класса, передавая вновь созданный экземпляр в качестве первого аргумента self.
В отличие от многих языков программирования, __init__ не называется «Методом конструктора».
Метод __init__ называется «Методом инициализатора». Метод инициализирует наш новый экземпляр класса. Таким образом, к тому моменту, когда метод инициализатора называется экземпляром класса, он уже является построенным.
Желаю удачи в программировании!
Источник: egorovegor.ru