logo

Конструктори в Python

Передумови: Об'єктно-орієнтоване програмування на Python, об'єктно-орієнтоване Python3

жирний текст css
Python3








class> GeekforGeeks:> ># default constructor> >def> __init__(>self>):> >self>.geek>=> 'GeekforGeeks'> ># a method for printing data members> >def> print_Geek(>self>):> >print>(>self>.geek)> # creating object of the class> obj>=> GeekforGeeks()> # calling the instance method using the object obj> obj.print_Geek()>

>



>

Вихід

GeekforGeeks>

Приклад параметризований конструктор:

Python3




class> Addition:> >first>=> 0> >second>=> 0> >answer>=> 0> ># parameterized constructor> >def> __init__(>self>, f, s):> >self>.first>=> f> >self>.second>=> s> >def> display(>self>):> >print>(>'First number = '> +> str>(>self>.first))> >print>(>'Second number = '> +> str>(>self>.second))> >print>(>'Addition of two numbers = '> +> str>(>self>.answer))> >def> calculate(>self>):> >self>.answer>=> self>.first>+> self>.second> # creating object of the class> # this will invoke parameterized constructor> obj1>=> Addition(>1000>,>2000>)> # creating second object of same class> obj2>=> Addition(>10>,>20>)> # perform Addition on obj1> obj1.calculate()> # perform Addition on obj2> obj2.calculate()> # display result of obj1> obj1.display()> # display result of obj2> obj2.display()>

>

>

Вихід

First number = 1000 Second number = 2000 Addition of two numbers = 3000 First number = 10 Second number = 20 Addition of two numbers = 30>

приклад:

Python




class> MyClass:> >def> __init__(>self>, name>=>None>):> >if> name>is> None>:> >print>(>'Default constructor called'>)> >else>:> >self>.name>=> name> >print>(>'Parameterized constructor called with name'>,>self>.name)> > >def> method(>self>):> >if> hasattr>(>self>,>'name'>):> >print>(>'Method called with name'>,>self>.name)> >else>:> >print>(>'Method called without a name'>)> # Create an object of the class using the default constructor> obj1>=> MyClass()> # Call a method of the class> obj1.method()> # Create an object of the class using the parameterized constructor> obj2>=> MyClass(>'John'>)> # Call a method of the class> obj2.method()>

>

>

Вихід

Default constructor called Method called without a name ('Parameterized constructor called with name', 'John') ('Method called with name', 'John')>

Пояснення:

У цьому прикладі ми визначаємо клас MyClass як з конструктором за замовчуванням, так і з параметризованим конструктором. Конструктор за замовчуванням перевіряє, чи було передано параметр, і друкує відповідне повідомлення на консоль. Параметризований конструктор приймає одне ім’я параметра та встановлює атрибут name об’єкта на значення цього параметра.

Ми також визначаємо метод method(), який перевіряє, чи має об’єкт атрибут імені чи ні, і друкує відповідне повідомлення на консоль.

Ми створюємо два об'єкти класу MyClass, використовуючи обидва типи конструкторів. Спочатку ми створюємо об’єкт за допомогою конструктора за замовчуванням, який виводить на консоль повідомлення, викликане конструктором за замовчуванням. Потім ми викликаємо метод method() для цього об’єкта, який виводить на консоль повідомлення Method called без імені.

Далі ми створюємо об’єкт за допомогою параметризованого конструктора, передаючи ім’я Джон. Конструктор викликається автоматично, і на консолі друкується повідомлення Parameterized constructor called with name John. Потім ми викликаємо метод method() для цього об’єкта, який виводить на консоль повідомлення Method called з ім’ям John.

Загалом, цей приклад показує, як обидва типи конструкторів можуть бути реалізовані в одному класі в Python.

Переваги використання конструкторів у Python:

    Ініціалізація об’єктів: конструктори використовуються для ініціалізації об’єктів класу. Вони дозволяють встановлювати значення за замовчуванням для атрибутів або властивостей, а також дозволяють ініціалізувати об’єкт користувацькими даними. Легко реалізувати: конструктори легко реалізувати в Python, їх можна визначити за допомогою методу __init__().
  • Краща читабельність: конструктори покращують читабельність коду, пояснюючи, які значення ініціалізуються та як вони ініціалізуються.
  • Інкапсуляція: конструктори можна використовувати для забезпечення інкапсуляції, гарантуючи, що атрибути об’єкта ініціалізуються правильно та контрольованим способом.

Недоліки використання конструкторів у Python:

    Перевантаження не підтримується: на відміну від інших об’єктно-орієнтованих мов, Python не підтримує перевантаження методів. Це означає, що ви не можете мати кілька конструкторів з різними параметрами в одному класі. Обмежена функціональність: конструктори в Python обмежені у своїй функціональності порівняно з конструкторами в інших мовах програмування. Наприклад, Python не має конструкторів із модифікаторами доступу, такими як public, private або protected. Конструктори можуть бути непотрібними: у деяких випадках конструктори можуть бути непотрібними, оскільки може бути достатньо стандартних значень атрибутів. У цих випадках використання конструктора може додати непотрібної складності коду.

Загалом, конструктори в Python можуть бути корисними для ініціалізації об’єктів та забезпечення інкапсуляції. Однак вони не завжди можуть бути необхідними та обмежені у своїй функціональності порівняно з конструкторами в інших мовах програмування.