Python/Объектно-ориентированное программирование на Python: различия между версиями

Содержимое удалено Содержимое добавлено
было верно отмена правки 72521999 участника 78.26.151.76 (обс)
Строка 57:
def __init__(self, x, y, z):
self.coord = (x, y, z)
 
def __repr__(self):
return "Point(%s, %s, %s)" % self.coord
Строка 67 ⟶ 68 :
</source>
 
Переопределив классовый метод <code>__new__</code>, можно контролировать процесс создания экземпляра. Этот метод вызывается до метода <code>__init__</code> и должен вернуть новый экземпляр, либо <code>None</code> (в последнем случае будет вызван <code>__new__</code> родительского класса). Метод <code>__new__</code> используется для управления созданием неизменчивых (immutable) объектов, управления созданием объектов в случаях, когда <code>__init__</code> не вызывается, например, при десериализации (unpickle). Следующий код демонстрирует один из вариантов реализации [[Одиночка (шаблон проектирования)|шаблона Одиночка]]:
десериализации (unpickle). Следующий код демонстрирует один из вариантов реализации [[Одиночка (шаблон проектирования)|шаблона Одиночка]]:
<source lang="python">
>>> class Singleton(object):