Специальные методы (__str__, __repr__ и другие)
Погрузитесь в специальные методы Python для настройки поведения объектов
«Специальные методы (__str__, __repr__ и другие)» — бесплатный урок Python Academy на CoddyKit. Это урок 6 из 6. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 6 уроков всего.
Введение в магические методы
Введение в магические методы
Магические методы, также известные как методы с двойным подчёркиванием (сокращённо — «двойное подчёркивание»), — это специальные методы в Python, позволяющие определять поведение объектов в определённых ситуациях.
В этом уроке Вы узнаете, как использовать распространённые магические методы, такие как __str__, __repr__ и другие.

Что такое магические методы
Что такое магические методы
Магические методы — это заранее определённые методы в Python, которые автоматически вызываются при выполнении определённых операций над объектами. Их можно распознать по двум символам подчёркивания, например в __init__ или __str__.
Метод __init__
Метод __init__
Метод __init__ — это конструктор, который инициализирует новый объект. Он автоматически вызывается при создании объекта:
# Using the __init__ method to initialize attributes
class Person:
def __init__(self, name, age):
self.name = name # Initialize the name attribute
self.age = age # Initialize the age attribute
# Creating an instance of Person
person = Person("Alice", 30)
print(person.name, person.age) # Outputs: Alice 30Метод __str__
Метод __str__
Метод __str__ определяет строковое представление объекта при вызове print():
# Defining the __str__ method
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Name: {self.name}, Age: {self.age}" # String representation
person = Person("Alice", 30)
print(person) # Outputs: Name: Alice, Age: 30Метод __repr__
Метод __repr__
Метод __repr__ предоставляет официальное строковое представление объекта, которое часто используется для отладки:
# Defining the __repr__ method
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return f"Person('{self.name}', {self.age})" # Debug-friendly representation
person = Person("Alice", 30)
print(repr(person)) # Outputs: Person('Alice', 30)Перегрузка операторов с помощью магических методов
Перегрузка операторов с помощью магических методов
Вы можете использовать магические методы, чтобы настроить поведение операторов, таких как + или ==:
# Overloading the + operator with __add__
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Point(self.x + other.x, self.y + other.y) # Adding two points
def __str__(self):
return f"({self.x}, {self.y})"
point1 = Point(1, 2)
point2 = Point(3, 4)
result = point1 + point2 # Calls __add__
print(result) # Outputs: (4, 6)Распространённые магические методы
Распространённые магические методы
Вот некоторые часто используемые магические методы:
__len__: определяет поведение функцииlen().__getitem__: позволяет обращаться к элементам по индексу, как в списке или словаре.__eq__: настраивает сравнение на равенство с помощью==.
Использование __len__ и __getitem__
Использование __len__ и __getitem__
Вы можете использовать __len__, чтобы определить длину пользовательского объекта, а __getitem__ — чтобы сделать его доступным по индексу:
# Using __len__ and __getitem__ in a custom class
class CustomList:
def __init__(self, items):
self.items = items
def __len__(self):
return len(self.items) # Defines the behavior of len()
def __getitem__(self, index):
return self.items[index] # Enables indexing
custom_list = CustomList([1, 2, 3])
print(len(custom_list)) # Outputs: 3
print(custom_list[1]) # Outputs: 2Распространённые ошибки при работе с магическими методами
Распространённые ошибки при работе с магическими методами
Вот некоторые ошибки, которых следует избегать:
- Определение магического метода без соответствия его предполагаемому поведению.
- Перегрузка операторов без необходимости.
- Не выполнять implementing всех требуемых магических методов в пользовательских типах данных.
Что мы узнали
Что мы узнали
В этом уроке Вы узнали:
- Что такое магические методы и чем они полезны.
- Как использовать распространённые магические методы, такие как
__init__,__str__и__repr__. - Как перегружать операторы с помощью магических методов.
Отличная работа! Перейдём к следующей теме.

Часто задаваемые вопросы
Урок «Специальные методы (__str__, __repr__ и другие)» бесплатный?
Да — полный текст урока «Специальные методы (__str__, __repr__ и другие)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 6 уроков всего.
Чему я научусь в уроке «Специальные методы (__str__, __repr__ и другие)»?
Погрузитесь в специальные методы Python для настройки поведения объектов Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 6 из 6.
Сколько времени занимает урок «Специальные методы (__str__, __repr__ и другие)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Классы и объекты
- Атрибуты и методы
- Наследование
- Полиморфизм
- Инкапсуляция и абстракция
- Специальные методы (__str__, __repr__ и другие)