Статья Автор: Омарбек Нұр-Мұхаммед

Теория

Метод .create()

В этом примере описан класс Square:

class Square:
    def create(self, x, y, size):
        self.x = x
        self.y = y
        self.size = size


s1 = Square()
s1.create(0, 0, 100)

s2 = Square()
s2.create(100, 0, 50)

В классе определяется метод .create(), с помощью которого задаются значения свойств экземпляра.

 

Метод __init__

Если забыть вызвать метод .create() (в предыдущем примере), то у экземпляра класса не будет свойств:

s3 = Square()
print(s3.x)  # ошибка!

Если попытаться обратиться к несуществующему свойству, то программа завершится с ошибкой.

 

Пример можно переписать и использовать "магический" метод __init__, который автоматически вызывается при создании экземпляра:

Было Стало
class Square:
    def create(self, x, y, size):
        self.x = x
        self.y = y
        self.size = size


s1 = Square()
s1.create(0, 0, 100)

s2 = Square()
s2.create(100, 0, 50)
class Square:
    def __init__(self, x, y, size):
        self.x = x
        self.y = y
        self.size = size


s1 = Square(0, 0, 100)
s2 = Square(100, 0, 50)

Метод __init__ называют конструктором и используется он для задания начальных значений свойств экземпляра.


Метод __del__

В каждом классе есть набор предопределённых методов. Например:

  • Метод __init__ - конструктор или инициализатор экземпляра класса
  • Метод __del__ - деструктор или финализатор экземпляра класса

 

Процесс создания экземпляра класса происходит следующим образом:

  • Создание объекта в памяти компьютера
  • После успешного создания автоматически вызывается метод __init__ для начальной инициализации объекта
  • После завершении работы интерпретатора автоматически вызывается метод __del__ для удаления объекта из памяти

 

class Square:
    def __init__(self, x, y, size):
        self.x = x
        self.y = y
        self.size = size

    def __del__(self):
        print(f"Объект {self} был удалён")


s1 = Square(0, 0, 100)
s2 = Square(100, 0, 50)

# Объект <__main__.Square object at 0x00DBF508> был удалён
# Объект <__main__.Square object at 0x00DBF538> был удалён

У интерпретатора Python есть "сборщик мусора", который удаляет объекты, как только они становятся ненужными.

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать