Шаг 136.
Основы языка Python.
Объектно-ориентированное программирование (ООП). Методы __init__() и __del__()

    На этом шаге мы рассмотрим особенности использования конструкторов и деструкторов.

    При создании экземпляра класса интерпретатор автоматически вызывает метод инициализации __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__()

    На следующем шаге мы рассмотрим наследование.




Предыдущий шаг Содержание Следующий шаг