Всякий раз, когда объектно-ориентированное программирование выполняется на Python, мы в основном сталкиваемся __init__
с методом, который мы обычно не до конца понимаем. В этой статье объясняется основная концепция __init__
, но прежде чем понять __init__
, необходимы некоторые предварительные условия.
__init__
Метод аналогичен конструкторам в C++
и Java
. Конструкторы используются для инициализации состояния объекта. Задача конструкторов состоит в инициализации(присвоении значений) членам данных класса при создании объекта класса. Как и методы, конструктор также содержит коллекцию инструкций(т. е. инструкций), которые выполняются во время создания объекта. Он запускается, как только создается экземпляр объекта класса. Этот метод полезен для выполнения любой инициализации, которую вы хотите выполнить с вашим объектом.
Пример:
# A Sample class with init method
class Person:
# init method or constructor
def __init__(self, name):
self.name = name
# Sample Method
def say_hi(self):
print('Hello, my name is', self.name)
p = Person('Nikhil')
p.say_hi()
Выход:
Hello, my name is Nikhil
Понимание кода
В приведенном выше примере создается имя человека Нихил. При создании человека “Нихил” передается в качестве аргумента, этот аргумент будет передан __init__
метод инициализации объекта. Ключевое слово self
представляет экземпляр класса и связывает атрибуты с заданными аргументами. Аналогично, многие объекты класса Person могут быть созданы путем передачи различных имен в качестве аргументов.
Пример:
# A Sample class with init method
class Person:
# init method or constructor
def __init__(self, name):
self.name = name
# Sample Method
def say_hi(self):
print('Hello, my name is', self.name)
# Creating different objects
p1 = Person('Nikhil')
p2 = Person('Abhinav')
p3 = Person('Anshul')
p1.say_hi()
p2.say_hi()
p3.say_hi()
Выход:
Hello, my name is Nikhil
Hello, my name is Abhinav
Hello, my name is Anshul
__init__ с наследованием
Наследование это способность одного класса выводить или наследовать свойства из какого-либо другого класса. Давайте рассмотрим приведенный ниже пример, чтобы увидеть, как __init__ работает в наследовании.
# Python program to
# demonstrate init with
# inheritance
class A(object):
def __init__(self, something):
print("A init called")
self.something = something
class B(A):
def __init__(self, something):
# Calling init of parent class
A.__init__(self, something)
print("B init called")
self.something = something
obj = B("Something")
Выход:
A init called B init called
Итак, сначала вызывается конструктор родительского класса. Но в Python необязательно, чтобы конструктор родительского класса всегда вызывался первым. Порядок, в котором метод __init__ вызывается для родительского или дочернего класса, может быть изменен. Это можно просто сделать, вызвав конструктор родительского класса после тела конструктора дочернего класса.
Пример:
# Python program to
# demonstrate init with
# inheritance
class A(object):
def __init__(self, something):
print("A init called")
self.something = something
class B(A):
def __init__(self, something):
print("B init called")
self.something = something
# Calling init of parent class
A.__init__(self, something)
obj = B("Something")
Выход:
B init called
A init called
Примечание: Чтобы узнать больше о наследовании кликните сюда.