Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

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

24 августа 2013 г. Archy Просмотров: 39874 RSS 3
ООП на Python , , ,

__init__() и __del__() в Python

При создании экземпляра класса интерпретатор автоматически вызывает метод инициализации __init__(). В некоторых языках программирования данные методы принято называть конструктором и деструктором класса. В языке программирования PHP это будет __construct(); __destruct(). Формат метода:

def __init__(self[, <Значение1>[, <ЗначениеN>]]):
    <Выражение>
С помощью метода __init__() можно присвоить значения по умолчанию для атрибутах класса. При создании экземпляра класса начальные значения указываются после имени класса в круглых скобках:

<Экземпляр класса> = <Имя класса>(<Значение1>[, ..., <ЗначениеN>])
Пример использования метода __init__() приведен ниже:

# -*- coding: utf-8 -*-
class HexColor:
    def __init__(self):
        self.colors = {
            'red'   :   '#ff0000',
            'greed' :   '#7cfc00',
            'blue'  :   '#4169e1'
        }
 
hex_color = HexColor()
print hex_color.colors['red']   # Получим: #ff0000
 
 
# Пример 2: Удваиваем число
class DoubleMe:
    def __init__(self, number):
        self.result = number * 2
 
Double = DoubleMe(2)
print Double.result             # Получим 4

Если конструктор вызывается при создании объекта, то перед уничтожением объекта автоматически вызывается метод, называемый деструктором т.е. "уничтожитель". В языке программирования Python деструктор реализуется в виде предопределенного метода __del__(). Следует заметить, что метод не будет вызван, если на экземпляр класса существует хотя бы одна ссылка. Кроме того, т.к. интерпретатор самостоятельно заботится об удалении объектов, использование деструктора в языке программирования Python не имеет особого смысла.

Применение метода __del__()

class Class1:
    def __init__(self): # Конструктор класса
        print "Вызван метод __init__()"
    def __del__(self):  # Деструктор класса
        print "Вызван метод __del__()"
c1 = Class1()          # Выведет: Вызван метод __init__()
del c1                 # Выведет: Вызван метод __del__()
c2 = Class1()          # Выведет: Вызван метод __init__()
c3 = c2                # Создаем ссылку на экземпляр класса
del c2                 # Ничего не выведет, т.к. существует ссылка
del c3                 # Выведет: Вызван метод __del__()

Объектно-ориентированный поход поможет вам быстрее понять принципы более сложного программирования не только на языке Python, но так же и на Java, C++. Если хорошо знать один язык программирования то любой другой язык будет в изучении более легким чем новичку. По сравнению с Python, Java является полностью объектно-ориентированным языком на нем можно заняться разработкой приложений на ios и в дальнейшем продавать их в AppStore. Программирование очень увлекательный мир, это искусство создавать что то новое.

Комментариев: 3
  1. Сергей | 2016-04-27 в 10:09:53

    Спасибо за материал. Очень качественный, советую всем читателям.

    Администратор, ты самый лучший. Так держать!

  2. Матвей | 2017-07-17 в 23:14:35

    Java используется для создания приложений на Android. Можно извернуться, конечно, но это совсем уж андеграунд

  3. На самом деле, тема не раскрыта. Я так и не понял, в каких случаях в Пайтоне нам нужно применять деструктор. И почему такие легчайшие примеры? Серьёзно, в жизни кто-то сам себе задаёт значения, а на кой чёрт программисты тогда концепцию "класс" вообще придумали?

    p.s.я не злой, просто реально не понимаю

    p.p.s. всё равно, спасибо за контент