На этом шаге мы рассмотрим особенности использования конструкторов и деструкторов.
При создании экземпляра класса интерпретатор автоматически вызывает метод инициализации __init__(). В других языках программирования такой метод принято называть конструктором класса. Формат метода:
def __init__(self [, <Значение1>[, ..., <ЗначениеN>]]): <Инструкции>
С помощью метода __init__() можно присвоить начальные значения атрибутам класса.
При создании экземпляра класса параметры этого метода указываются после имени класса в круглых скобках:
<Экземпляр класса> = <Имя класса>([<Значение1>[, ..., <ЗначениеN>]])
Пример использования метода __init__():
class MyClass: def __init__(self, value1, value2): # Конструктор self.x = value1 self.y = value2 c = MyClass(100, 300) # Создаем экземпляр класса print(c.x, c.y) # Выведет: 100 300
Результат работы приложения:
100 300
Если конструктор вызывается при создании объекта, то перед уничтожением объекта автоматически вызывается метод, называемый деструктором. В языке Python деструктор реализуется в виде предопределенного метода __del__(). Следует заметить, что метод не будет вызван, если на экземпляр класса существует хотя бы одна ссылка. Впрочем, поскольку интерпретатор самостоятельно заботится об удалении объектов, использование деструктора в языке Python не имеет особого смысла.
Пример использования деструктора:
class MyClass: def __init__(self): # Конструктор класса print ( "Вызван метод __init__()") def __del__(self): # Деструктор класса print ( "Вызван метод __del__()") c1 = MyClass() # Выведет: Вызван метод __init__() del c1 # Выведет: Вызван метод __del__() c2 = MyClass() # Выведет: Вызван метод __init__() c3 = c2 # Создаем ссылку на экземпляр класса del c2 # Ничего не выведет, т. к. существует ссылка del c3 # Выведет: Вызван метод __del__()
Результат работы приложения:
Вызван метод __init__()
Вызван метод __del__()
Вызван метод __init__()
Вызван метод __del__()
На следующем шаге мы рассмотрим наследование.