Может ли класс в python содержать несколько конструкторов
Конструктор в Python – это особый тип метода (функции), который используется для инициализации членов экземпляра класса.
В C ++ или Java конструктор имеет то же имя, что и его класс, в Python конструктор обрабатывается по-разному. Он используется для создания объекта.
Конструкторы бывают двух типов:
- Параметризованный конструктор
- Непараметрический конструктор
Определение конструктора выполняется, когда мы создаем объект этого класса. Конструкторы также проверяют, что у объекта достаточно ресурсов для выполнения любой задачи запуска.
Создание конструктора на Python
В Python метод __init __() имитирует конструктор класса. Этот метод вызывается при создании экземпляра класса. Он принимает ключевое слово self в качестве первого аргумента, который позволяет получить доступ к атрибутам или методу класса.
Мы можем передать любое количество аргументов во время создания объекта класса, в зависимости от определения __init __(). В основном он используется для инициализации атрибутов класса. У каждого класса должен быть конструктор, даже если он просто полагается на конструктор по умолчанию.
Рассмотрим следующий пример для инициализации атрибутов класса Employee при работе с конструкторами в Python.
Подсчет количества объектов класса
Конструктор вызывается автоматически, когда мы создаем объект класса. Рассмотрим следующий пример.
Непараметрический
Непараметрический конструктор используется, когда мы не хотим манипулировать значением, или конструктором, который имеет только self в качестве аргумента. Разберем на примере.
Параметризованный конструктор Python
У параметризованного конструктора есть несколько параметров вместе с самим собой.
Конструктор Python по умолчанию
Когда мы не включаем конструктор в класс или забываем его объявить, он становится конструктором по умолчанию. Он не выполняет никаких задач, а инициализирует объекты. Рассмотрим пример.
Более одного конструктора в одном классе
Давайте посмотрим на другой сценарий, что произойдет, если мы объявим два одинаковых конструктора в классе.
В приведенном выше коде объект st вызвал второй конструктор, тогда как оба имеют одинаковую конфигурацию. Первый метод недоступен для объекта st. Внутренне объект класса всегда будет вызывать последний конструктор, если у класса есть несколько конструкторов.
Примечание. Перегрузка конструктора в Python запрещена.
Встроенные функции классов Python
Встроенные функции, определенные в классе, описаны в следующей таблице.
SN | Функция | Описание |
---|---|---|
1 | getattr(obj,name,default) | Используется для доступа к атрибуту объекта. |
2 | setattr(obj, name,value) | Она используется для установки определенного значения для определенного атрибута объекта. |
3 | delattr (obj, name) | Необходима для удаления определенного атрибута. |
4 | hasattr (obj, name) | Возвращает истину, если объект содержит определенный атрибут. |
Встроенные атрибуты класса
Наряду с другими атрибутами класс Python также содержит некоторые встроенные атрибуты класса, которые предоставляют информацию о классе.
Python предлагает некоторые альтернативные способы поддержки нескольких конструкторов. Некоторые из этих способов мы обсудим здесь на практике.
Привет программистам, сегодняшняя статья посвящена нескольким конструкторам в Python. Переход на python с любого другого языка программирования имеет все преимущества, за исключением случаев, когда речь идет о нескольких конструкторах. Python не поддерживает несколько конструкторов. Однако python предлагает некоторые альтернативные способы поддержки нескольких конструкторов. Мы обсудим некоторые из этих способов здесь. Но прежде позвольте мне кратко рассказать вам о том, что такое необходимость в нескольких конструкторах в программе.
Несколько конструкций помогут вам настроить свой класс в соответствии с его параметрами. При использовании разного количества параметров могут срабатывать разные конструкции. В отличие от других языков программирования, Python имеет другой способ обработки нескольких параметров. Мы подробно рассмотрим каждый из них.
Python Несколько Конструкторов И Его Необходимость:
Несколько конструкторов используются, когда определенный класс должен выполнять различные функции. И на разных параметрах или экземплярах класса.
При многократном написании одного и того же метода для класса последний перезаписывает все предыдущие конструкторы. Поскольку несколько конструкторов плохо работают с python, конструкторы классов демонстрируют полиморфизм. Этот метод помогает реплицировать функцию множественного конструктора в python.
Различные способы получить несколько конструкторов в Python:
- Перегрузка конструктора на основе аргументов
- @classmethod decorator
Перегрузка конструктора Python на основе аргументов в виде нескольких конструкторов:
ОБЪЯСНЕНИЕ:
В приведенном выше примере ответом является переменная экземпляра примера класса. Его значение различалось в разных экземплярах внутри класса на основе аргументов. Класс может иметь несколько аргументов. Поэтому *args определяется как кортеж, содержащий различные переданные ему аргументы. Аргументы доступны с помощью индекса. Например, как и в случае с целыми числами и строками, поскольку передается только один аргумент, доступ к нему осуществляется как к args[0]. В то время как для суммы доступ к более чем одному аргументу, переданному ей, осуществляется с помощью цикла.
Методы Python, вызывающие из __init__ как несколько конструкторов:
ОБЪЯСНЕНИЕ:
В этом примере три уравнения, выполняемые в экземплярах класса: equaton1 –2 + b2 equation2 – + b – c. Уравнение 3 – z = сумма квадрата переданных аргументов/5.0.
уравнение 1 для двух аргументов. уравнение 2 – для трех, а уравнение 3-для более чем трех.
Используя мультиконструктор в python, определяется класс, имеющий один конструктор __init__. Он может выполнять любые действия по созданию различных экземпляров класса. Прежде всего, в приведенном выше коде уравнения, подлежащие вычислению, записываются в разных экземплярах класса. Прежде всего конструктор __init__ вызывает различные методы для возврата ответа на основе количества переданных аргументов.
@classmethod decorator как несколько конструкторов:
ОБЪЯСНЕНИЕ:
Уравнения, выполняемые в приведенном выше примере: equaton1 –2 + b2. Уравнение 2 –+ b – c. Аналогично уравнению 3 – z = сумма квадрата переданных аргументов/5.0.
При передаче двух аргументов вычисляется уравнение 1. Для трех аргументов выполняется уравнение 2. И для более чем трех аргументов вычисляется уравнение 3.
Надо Читать
- Введение в Python Super С примерами
- Функция справки Python
- Почему Python sys.exit лучше других функций выхода?
- Python Bitstring: Классы и другие примеры | Модуль
Вывод:
В заключение можно сказать, что сам Python не может поддерживать использование мультиконструкторов для класса. Он допускает различные альтернативы, рассмотренные выше. Однако перегрузка конструктора и __init__ definition влечет за собой определенные проблемы. Во-первых, нет четкого указания на то, что требуется при создании экземпляров класса. Кроме того, существуют различные комбинации инициализации нового экземпляра путем передачи аргументов. Таким образом, лучшая из трех приведенных альтернатив-это декорирование с помощью @classmethod decorators в качестве мультиконструкторов.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.
Функция функции конструктора Python Class – это инициализировать экземпляр класса. Python __init __ () – функция конструктора для классов в Python.
Функция функции конструктора Python Class – это инициализировать экземпляр класса. Python __init __ () – функция конструктора для классов в Python.
Python __init __ () Функциональный синтаксис
Синтаксис функции __init __ ():
- Ключевое слово def используется для определения его, потому что это Функция Отказ
- Первый аргумент относится к текущему объекту. Это связывает экземпляр к методу init (). Обычно названо «я», чтобы следовать в Конвенции именования. Вы можете прочитать больше об этом на Python самоуправление Отказ
- Аргументы метода INIT () являются необязательными. Мы можем определить конструктор с любым количеством аргументов.
Примеры конструктора класса Python
Давайте посмотрим на некоторые примеры функции конструктора в разных сценариях.
1. класс без конструктора
Мы можем создать класс без определения конструктора. В этом случае конструктор SuperClass вызывается для инициализации экземпляра класса. объект Класс – это основа всех классов в Python.
Вот еще один пример, чтобы подтвердить, что конструктор SuperClass вызывается для инициализации экземпляра подкласса.
2. Простой конструктор без аргументов
Мы можем создать конструктор без каких-либо аргументов. Это полезно для целей регистрации, таких как сохранение подсчета экземпляров класса.
3. Конструктор класса с аргументами
Большую часть времени вы найдете функцию конструктора с некоторыми аргументами. Эти аргументы обычно используются для инициализации переменных экземпляров.
4. Класс конструктор с наследством
- Наша обязанность называть конструктор SuperClass.
- Мы можем использовать функцию Super () для вызова функции конструктора SuperClass.
- Мы также можем использовать имя SuperClass, чтобы вызвать его метод init ().
5. Конструктор цепи с многоуровневым наследством
6. Конструктор с несколькими наследованием
Мы не можем использовать Super () для доступа к всем суперклассам в случае нескольких наследований. Лучшим подходом было бы позвонить конструктору функции суперкласс, используя имя своего класса.
Python не поддерживает несколько конструкторов
Python не поддерживает несколько конструкторов, в отличие от других популярных объектно-ориентированных языков программирования, таких как Java.
Мы можем определить несколько методов __init __ (), но последний переопределят более ранние определения.
Может ли Python __init __ () Функция что-нибудь вернуть?
Если мы попытаемся вернуть значение без значения из функции __init __ (), она будет поднять JypeError.
Если мы изменим оператор возврата в вернуть ни один Затем код будет работать без каких-либо исключения.
Python does not support explicit multiple constructors, yet there are some ways using which the multiple constructors can be achieved. If multiple __init__ methods are written for the same class, then the latest one overwrites all the previous constructors. Look at the example below.
Python3
Need for multiple constructors
- Перегрузка конструкторов на основе аргументов.
- Вызов методов из __init__ .
- Использование декоратора @classmethod.
В этой статье объясняется, как иметь несколько конструкторов чистым и питоническим способом с примерами.
Перегрузка конструкторов на основе аргументов
- If the parameter is an int, the square of the number should be the answer.
- If the parameter is a String, the answer should be “Hello!!”+string.
- If the parameter is of length greater than 1, the sum of arguments should be stored as the answer.
Python3
В приведенном выше коде переменная экземпляра была ans , но ее значения различаются в зависимости от аргументов. Поскольку для класса используется переменное количество аргументов, используется * args, который представляет собой кортеж, содержащий переданные аргументы, к которому можно получить доступ с помощью индекса. В случае int и string передается только один аргумент, и доступ к нему осуществляется как args [0] (единственный элемент в кортеже).
Вызов методов из __init__
- If the number of arguments passed is 2, then evaluate the expression x = a 2 -b 2
- If the number of arguments passed is 3, then evaluate the expression y = a 2 +b 2 -c.
- If more than 3 arguments have been passed, then sum up the squares, divide it by thehighest value in the arguments passed.
Python3
В приведенном выше примере уравнение, которое нужно оценить, записано в разных методах экземпляра и должно возвращать ответ. Конструктор вызывает соответствующий метод и действует по-разному для разных параметров.
Выражения были оценены следующим образом:
inputs : 1,2,3 —> (1 2 + 2 2 ) – 3 = 5-3 = 2
inputs : 1,2,3,4,5 —> (1 2 + 2 2 + 3 2 + 4 2 + 5 2 ) / 5 = 55/5 = 11.0
Использование декоратора @classmethod
This decorator allows a function to be accessible without instantiating the class. The functions can be accessed both by the instance of the class and the class itself. The first parameter of the method that is declared as classmethod is cls, which is like the self of the instance methods. Here cls refer to the class itself. This proves to be very helpful to use multiple constructors in Python and is a more Pythonic approach considered to the above ones. Consider the same example used above. Evaluate different expressions based on the number of inputs.
In this tutorial, we will learn what is python constructors and how to get multiple constructors for class in python?
Before proceeding with the multiple constructors class you must know about python constructors and how to initialize in the class.
So Let’s get started.
What is Constructors in Python?
A constructor is a special kind of method (function) that is used to initialize the instance of the class. Python considers the constructors differently but the C++ and Java declare the same name as the class.
There are two types of constructors:
- Parameterized Constructor
- Non-parameterized Constructor
When we create an object of this class, the constructor function will be run. Constructors also check if the object has sufficient resources to complete any startup tasks.
To create a constructor in python, we will use the __init__() function. When the class is created, this method is invoked. It takes the self keyword as a first parameter, allowing access to the class’s properties and methods.
Let’s see the example of python constructors in a class.
Class Constructor with No-Parameters
We can create a python constructor without any parameters to logging the data to keep the count number of instances of the class.
Let’s declare the constructor function with the __init__() function. See in the below example.
Output
Student Constructor
Student Name is Oliver and Phone is 1234567890
Hope you understand the python constructors and how to use them.
As you see in the above examples there are only one constructors and yes we can only create one constructor in a class…BUT if you could create multiple constructors in python class, isn’t it helpful for you to handle complex functionality in short?
Let’s get started with multiple constructors in the python class.
Create Multiple Constructors in Python Class
You can create multiple constructors in class and you can customize it according to the parameters. Constructors will be run based on the different number of parameters.
It helps when a specified class performs several functions based on various parameters.
Create Multiple Constructors with __init__() Function
As we learned above the __init__() function used to create constructors in the python class. It declares with the first parameter of a self keyword. The self keyword allows us to access the variables and functions of the class.
To create multiple constructors in the python class, we declare the __init__() function with argument. That argument will check which function has to execute.
It means the class will execute different functions based on that argument condition checking in the constructor function. See the example below.
Output
Equation 1 : 38
Equation 2 : -5
Equation 3 : 55
Create Multiple Constructors with Constructor Overloading
In this method, the constructor will overload again and again based on the arguments. Look at the example below.
Output
Square of integer: 64
Sum of list: 44
Hope you understand the Multiple Constructors.
Читайте также: