Відповідь на питання
Так і ні, але дозвольте мені пояснити.
У ООП мовах програмування конструктор не повертає явно жодного значення, але неявно повертає екземпляр класу, який створює. Це означає, що коли ви створюєте новий об'єкт за допомогою конструктора, конструктор не має явного оператора return
, але він автоматично повертає недавно створений екземпляр класу.
Буде помилка, якщо ми хочемо експліцитно повернути будь-яке значення з конструктора. Ось приклад конструктора на Python, який хоче експліцитно повернути рядкове значення.
Приклад на Python:
class Person:
def __init__(self):
return "Це викличе помилку" # Експліцитний return не дозволяється в __init__
Це викличе помилку
obj = Person()
Вивід:
Traceback (most recent call last):
File "/home/runner/Returning-a-value-from-constructor-in-OOP/main.py", line 5, in <module>
obj = Person()
^^^^^^^^
TypeError: __init__() should return None, not 'str'
Проте, конструктор неявно повертає екземпляр класу, який він створює.
class Person:
def __init__(self, name):
self.name = name
obj = Person("Райян")
print(obj.name) # Вивід: Райян
Вивід
Райян
Чому конструктор не може повертати значення?
Метою конструктора є ініціалізація об'єкта класу при його створенні. Він викликається неявно при створенні екземпляру класу, і його завдання - це налаштувати об'єкт, а не повертати значення. У мовах програмування, таких як Java і C ++, якщо ви спробуєте повернути значення з конструктора, ви отримаєте помилку компіляції.
Ключові моменти:
- Неявний повернення: Конструктори неявно повертають екземпляр класу.
- Немає явного типу повернення: У конструкторів немає явного типу повернення (навіть
void
).
Мета Ініціалізації: Основна мета конструктора полягає в ініціалізації об'єкту, а не у поверненні значень.
Мета Ініціалізації: Основна мета конструктора полягає в ініціалізації об'єкту, а не у поверненні значень.
Перекладено з: Do Constructors Return Values in OOP?