Рубрики
Без рубрики

Python __new__ Объяснен Примерами

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

Автор оригинала: Team Python Pool.

Привет гики и добро пожаловать в сегодняшней статье мы рассмотрим Python new. Наряду с этим мы рассмотрим определение и применение этого метода. Все это мы будем делать на примерах. Как мы знаем, python-это язык программирования высокого уровня. С его помощью мы также можем выполнять объектно-ориентированное программирование. В Python существует несколько специальных методов, известных как magic methods или double underscore methods. Они были широко используемыми методами в перегрузке оператора. Это можно понять как условие, при котором различные операторы имеют различные реализации в зависимости от их аргументов.

Другая вещь, которая отличает магический метод от обычного метода, заключается в том, что они имеют суффиксы и префиксы двойного подчеркивания вокруг них. Например, __new__ , __add__ и т. Д. В этой статье мы в первую очередь сосредоточимся на магическом методе __new__. Далее в этой статье я буду использовать new вместо __new__.

Python __new__ метод и его синтаксис

В этом разделе мы попытаемся понять, что такое новый метод на самом деле. Наряду с этим мы также рассмотрим его синтаксис . Развить полное понимание этого метода.

В объектно-ориентированном программировании всякий раз, когда класс создает экземпляр, вызывается метод < strong>new. Новый метод вызывается при создании объекта и является статическим методом. Для прохождения через него требуется параметр cls. cls. Во время создания экземпляра компилятор сам заботится об этом. Далее рассмотрим синтаксис этого метода.

Синтаксис

class class_name:
    def __new__(cls, *args, **kwargs):
        print()
        return super(class_name, cls).__new__(cls, *args, **kwargs)

Это общий синтаксис нового метода. Здесь мы использовали super с нашим оператором return. Мы используем его, потому что он возвращает временный объект и позволяет нам получить доступ к методам базового класса. Далее рассмотрим некоторые примеры, связанные с этим.

Примеры Python __new__

class A(object): 
    def __new__(cls): 
         print("EXAMPLE-1") 
         return super(A, cls).__new__(cls) 
  
A()

Выход:

EXAMPLE-1

Выше мы видим самый первый пример, связанный с новым методом. Здесь мы не сделали ничего необычного, и единственным мотивом было правильно выполнить синтаксис. Здесь мы определили объект. Внутри него мы определили новый класс. Затем мы использовали простую печать и возвратили супер. Наконец, мы просто вызываем объект.

import math
class A(object): 
    def __new__(cls): 
        ("enter the number")
        ("enter the number")
        (a)+int(b)
         print(c)
         
         return super(A, cls).__new__(cls) 
  
A()

Выход:

enter the number 7
enter the number 9
16

В этом примере мы провели сложение 2 чисел. Здесь мы взяли входные данные от пользователя. Остальное мы только что проследили за соответствующим синтаксисом. Из приведенных выше 2 рассмотренных примеров можно сделать вывод, что новый метод вызывается автоматически. А также оператор return super следует использовать при работе с магическими методами.

Разница между __new__ и __init__ магическими методами

Поскольку до сих пор в этой статье мы обсуждали новый магический метод. Метод __int__ также автоматически добавляется при создании экземпляра класса. Здесь разница между 2-мя заключается в том, что метод init используется для инициализации объекта. Кроме того, когда оба метода присутствуют в этом случае сначала выполняется новый метод. После чего решается, использовать ли метод init или нет. Давайте рассмотрим пример, включающий в себя оба метода, которые сделают вещи намного яснее для нас.

class A(object): 
    def __new__(cls): 
         print("New method") 
         return super(A, cls).__new__(cls) 
  
    def __init__(self): 
        print("Init method ") 
  
A()

Выход:

New method
Init method 

Выше мы можем увидеть простой пример, включающий оба метода. Из этого мы можем наблюдать еще одну вещь, которая заключается в том, что новое вызывается автоматически. В то время как для init он будет вызываться каждый раз в этом случае.

Вывод

В этой статье мы рассмотрели Python __new__. Мы рассмотрели Магический метод , который вызывается автоматически всякий раз, когда создается экземпляр класса. Мы также рассмотрели его определение и синтаксис. Чтобы понять это правильно, мы рассмотрели несколько примеров. В конце концов, мы также сравнили его с другой функцией с именем init.

Надеюсь, эта статья смогла развеять все сомнения. Но если у вас есть какие-либо нерешенные вопросы, не стесняйтесь писать их ниже в разделе комментариев. Прочитав это, почему бы не прочитать обо всем близком дальше.