Метод __new__ в ООП в Python
При создании объекта Python сначала
вызывает специальный метод __new__,
а уже потом конструктор __init__.
Метод __new__ должен создать
и вернуть новый объект класса.
Обычно __new__ не переопределяют.
Если это все же нужно, внутри вызывают
реализацию родительского класса через
super().__new__(cls).
Пусть у нас есть класс User:
class User:
def __new__(cls, name):
print('__new__')
return super().__new__(cls)
def __init__(self, name):
print('__init__')
self.name = name
Создадим объект и посмотрим порядок вызовов:
user = User('john')
Сделайте класс Employee с
переопределенным __new__,
который выводит текст перед созданием
объекта, и конструктором, который
записывает имя сотрудника.