Рубрики

Dunder или магические методы в Python

Dunder или магические методы в Python — это методы, имеющие два префиксных и суффиксных подчеркивания в имени метода. Дандер здесь означает «Двойной Под (Подчеркивает)». Они обычно используются для перегрузки операторов. Несколько примеров магических методов: __init__, __add__, __len__, __repr__ и т. Д.

Метод __init__ для инициализации вызывается без какого-либо вызова, когда создается экземпляр класса, как конструкторы в некоторых других языках программирования, таких как C ++, Java, C #, PHP и т. Д. Эти методы являются причиной, по которой мы можем добавить две строки с помощью ' + 'оператор без какой-либо явной типизации.

Вот простая реализация:

# объявляем наш собственный класс строки

class String:

      

    # магический метод для инициации объекта

    def __init__(self, string):

        self.string = string

          
Код водителя

if __name__ == '__main__':

      

    # создание объекта

    string1 = String('Hello')

  

    # распечатать местоположение объекта

    print(string1)

Выход :

<__main__.String object at 0x7fe992215390>

Приведенный выше фрагмент кода печатает только адрес памяти строкового объекта. Давайте добавим метод __repr__ для представления нашего объекта.

# объявляем наш собственный класс строки

class String:

      

    # магический метод для инициации объекта

    def __init__(self, string):

        self.string = string

          

    # напечатать наш строковый объект

    def __repr__(self):

        return 'Object: {}'.format(self.string)

  
Код водителя

if __name__ == '__main__':

      

    # создание объекта

    string1 = String('Hello')

  

    # распечатать местоположение объекта

    print(string1)

Выход :

Object: Hello

Если мы попытаемся добавить строку к нему:

# объявляем наш собственный класс строки

class String:

      

    # магический метод для инициации объекта

    def __init__(self, string):

        self.string = string

          

    # напечатать наш строковый объект

    def __repr__(self):

        return 'Object: {}'.format(self.string)

  
Код водителя

if __name__ == '__main__':

      

    # создание объекта

    string1 = String('Hello')

      

    # concatenate String объект и строка

    print(string1 +' world')

Выход :

TypeError: unsupported operand type(s) for +: 'String' and 'str'

Теперь добавьте метод __add__ в класс String:

# объявляем наш собственный класс строки

class String:

      

    # магический метод для инициации объекта

    def __init__(self, string):

        self.string = string 

          

    # напечатать наш строковый объект

    def __repr__(self):

        return 'Object: {}'.format(self.string)

          

    def __add__(self, other):

        return self.string + other

  
Код водителя

if __name__ == '__main__':

      

    # создание объекта

    string1 = String('Hello')

      

    # concatenate String объект и строка

    print(string1 +' Geeks')

Выход :

Hello Geeks

Ссылка: docs.python.org .

Рекомендуемые посты:

Dunder или магические методы в Python

0.00 (0%) 0 votes