Объектно-ориентированное программирование. Методы __init__() и __del__() в Python
ООП на Python python del, python init, изучить 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. Программирование очень увлекательный мир, это искусство создавать что то новое.
- Слоты и обобщенные инструмены в Python
- Наследование. Объектно-ориентированное программирование в Python
- Объектно-ориентированное программирование. Определение класса и создание экземпляра класса в Python
- Гибкое создание объектов в Python с помощью метода __new__
- Абстрактные методы в Python
- Альтернативы статическим методам Python
- Множественное наследование в Python
Спасибо за материал. Очень качественный, советую всем читателям.
Администратор, ты самый лучший. Так держать!
Java используется для создания приложений на Android. Можно извернуться, конечно, но это совсем уж андеграунд
На самом деле, тема не раскрыта. Я так и не понял, в каких случаях в Пайтоне нам нужно применять деструктор. И почему такие легчайшие примеры? Серьёзно, в жизни кто-то сам себе задаёт значения, а на кой чёрт программисты тогда концепцию "класс" вообще придумали?
p.s.я не злой, просто реально не понимаю
p.p.s. всё равно, спасибо за контент