Простой Python | Программирование
عکس
برای نمایش کلیک کنید
برای نمایش کلیک کنید
Объяснение:
__new__ управляет созданием экземпляра. При первом вызове создаётся объект, при втором возвращается тот же объект. Однако __init__ вызывается каждый раз, когда создаётся «новый» объект (после __new__). В нашем случае __new__ возвращает существующий экземпляр, но Python всё равно вызывает __init__ для этого объекта при каждом вызове конструктора, если __new__ вернул экземпляр того же класса. Поэтому "init called" будет напечатано дважды. s1 is s2 — True. Часто Singleton реализуют так, чтобы __init__ выполнялся только один раз (через флаг).
#практика
Бесплатный ChatGPT
27 · 5.8K ·