Автор оригинала: Team Python Pool.
init Python | Является ли __init__ in Python конструктором?
Одним из наиболее широко используемых и наиболее непонятых является init в python. Python-это одна из объектно-ориентированных парадигм (все, что вы создаете, является объектом), а init в терминологии python известен как конструктор.
Не волнуйтесь, если вы не знаете, что такое объектно-ориентированное программирование, или вы не знаете о конструкторах. Мы постараемся объяснить с самых основ. Теперь давайте сначала разберемся в термине Объектно-ориентированное программирование.
Объектно-ориентированное программирование:
Объектно-ориентированное программирование, обычно называемое OOPs, – это тип языка программирования, в котором разработчики определяют тип данных структуры данных и все те операции, которые мы могли бы выполнять с этим типом данных. Одним из таких типов данных является класс.
Класс в Python
В объектно-ориентированном программировании класс-это набор связанных элементов с одинаковыми или различными типами данных. Например, если бы у нас был класс студентов, переменные были бы названы, возраст, секция, пол и т. Д. А операции, которые могут выполняться объектами, – это calculate_marks().
Объект в Python
Объект является сущностью среды выполнения класса и используется для выполнения операций, объявленных в классе. Он содержит состояние и поведение класса. Для класса учащихся под состоянием подразумеваются такие свойства, как имя, возраст, номер броска, а под поведением-тип ученика.
Давайте теперь разберемся в точной концепции и примерах использования __init__ в python.
Использование __init__ в Python
__init__ – это особый вид метода в python. Это так же, как конструктор в других объектно-ориентированных языках программирования, таких как c++ и java.
Свойство конструктора состоит в том, что всякий раз, когда мы инициализируем объект класса, конструктор вызывается автоматически. И самое лучшее, что мы можем также инициализировать атрибуты класса, такие как имя, возраст и т. Д. при инициализации объекта.
Синтаксис __init__ в Python
class example: # constructor initialized def __init__(self): print("__init__ called")
Вызов __init__ в python
Вы, должно быть, заметили параметр с именем “self” в init(). Какова здесь роль ключевого слова self? Мы не используем его в обычных функциях. Так почему же мы используем его здесь? Если этот вопрос приходит вам в голову, вы на правильном пути обучения. Теперь давайте разберемся, что это за ключевое слово self?
Личность:
Ключевое слово self является первым параметром каждого метода класса и используется для привязки атрибутов к заданным значениям параметров (аргументов). Большинство языков программирования используют этот тип ключевого слова в фоновом режиме, но это не относится к init в python.
Не вдаваясь в слишком много технических терминов, давайте разберемся с ключевым словом self на примере.
class student: def __init__(self,name,age): ("ashwini",20)("Sushant",34) print(student1.name,student1.age) print(student2.name,student2.age)
Output- ashwini 20 Sushant 34
Здесь мы создали класс Student с тремя параметрами в функции init. Первый-это самость, которую мы поймем через некоторое время, следующий-имя и возраст. Обратите внимание, что мы сделали два объекта класса Student, а именно student1 и student2. При создании этих объектов мы должны передать такое же количество аргументов, как и в __init__. Обратите внимание, что мы не считаем себя здесь параметром. В обоих случаях имя и возраст объекта различны. Ключевое слово self-позволяет каждому объекту иметь разные значения, например, когда мы печатаем(student1.age), он печатает возраст студента 1, а если мы печатаем(student2.age), он печатает возраст 2-го студента. Если бы не было само-ключевого слова, это было бы невозможно.
Различные виды использования __init__ в Python
Мы можем использовать значения, инициализированные с помощью init, в других функциях. Давайте посмотрим, как.
class student: def __init__(self,name,age): class student_marks: def __init__(self,name,english,maths,science,sst): def calculate_avg_marks(self): .english+self.maths+self.science+self.sst /4 return avg_marks ("Ashwini",20,12,14,15)("Ashu",10,18,16,9)("Sonu",16,14,20,11)("Sushant",20,20,20,20) print(student1.calculate_avg_marks()) print(student2.calculate_avg_marks()) print(student3.calculate_avg_marks()) print(student4.calculate_avg_marks())
Output- 15.25 13.25 15.25 20.0
Наследование __init__ в Python
Наследование-одно из важнейших понятий Объектно-ориентированного программирования. С помощью наследования один класс может наследовать свойства другого класса. Это помогает повторно использовать один и тот же код, чтобы нам не приходилось писать один и тот же тип кода снова и снова.
class Person(): def __init__(self,name): print("Person Init called.") class Student(Person): def __init__(self, name): Person.__init__(self, name) print("Student Init called.") def display(self): print("Student",self.name) class Employee(Person): def __init__(self, name): Person.__init__(self, name) print("Employee Init called.") def display(self): print("Employee",self.name) ('Vicky') student.display()('Vikas') employee.display()
Output- Person Init called. Student Init called. Student Vicky Person Init called. Employee Init called. Employee Vikas
Обратите внимание, что здесь конструктор класса Person был вызван первым. Это происходит в большинстве объектно-ориентированных языков программирования, таких как href=”https://isocpp.org/”>c++ и java. Но в python это зависит от порядка, в котором мы вызвали функцию init в подклассе. Давайте рассмотрим пример. href=”https://isocpp.org/”>c++ и java. Но в python это зависит от порядка, в котором мы вызвали функцию init в подклассе. Давайте рассмотрим пример.
class Person(): def __init__(self,name): print("Person Init called.") class Student(Person): def __init__(self, name): print("Student Init called.") Person.__init__(self, name) def display(self): print("Student",self.name) ('Vicky') student.display()
Output- Student Init called. Person Init called. Student Vicky
Super() в python
В Python, если мы используем super() в подклассе, мы можем получить временный объект для суперкласса и с его помощью вызвать методы суперкласса в подклассе.
Программа для поиска площади кубоида и куба без супер()-
class Cuboid: def __init__(self, length, width,height): def total_surface_area(self): return 2*(self.length * self.width +self.width*self.height+self.length*self.height) class Cube: def __init__(self, length): def total_surface_area(self): return 6*self.length * self.length (5,4,3) print(cuboid.total_surface_area())(5) print(cube.total_surface_area())
Output- 94 150
Теперь давайте используем super (), чтобы найти тот же вывод-
class Cuboid: def __init__(self, length, width,height): def total_surface_area(self): return 2*(self.length * self.width + self.width*self.height+self.length*self.height) class Cube(Cuboid): def __init__(self, length): super().__init__(length,length,length) (5,4,3) print(cuboid.total_surface_area())(5) cube.total_surface_area()
94
150
Обратите внимание, что мы должны писать меньший код, если используем super(). Даже если это был небольшой фрагмент кода с использованием super(), нам удалось уменьшить количество строк, представьте себе, если бы у нас было несколько классов, зависящих от одного класса, насколько меньше наш код стал бы с помощью super().
Надо Читать:
- Как преобразовать строку в нижний регистр в
- Как вычислить Квадратный корень
- Пользовательский ввод | Функция ввода () | Ввод с клавиатуры
- Лучшая книга для изучения Python
Заключение __init__ в Python
Теперь мы знаем, насколько полезен __init__ в python. Есть много случаев, когда мы должны использовать его. Эти типы уникальных методов делают python отличным языком программирования.
Попробуйте запустить программы на вашей стороне и дайте мне знать, если у вас есть какие-либо вопросы.
Счастливого кодирования!