Главная страница » Python » 43. Цепочка вызовов
Добро пожаловать на 43-й урок по Python! Сегодня мы обсудим концепцию цепочки вызовов (или «method chaining») в Python. Эта техника позволяет вызывать несколько методов подряд на одном объекте, что делает код более компактным и удобочитаемым.
Цепочка вызовов — это стиль программирования, при котором несколько методов вызываются последовательно на одном объекте, где каждый метод возвращает объект, на котором можно вызвать следующий метод. Это позволяет писать более лаконичный и выразительный код, избегая промежуточных переменных.
Строки в Python поддерживают множество методов, которые могут быть использованы в цепочке вызовов.
text = " hello world "
result = text.strip().upper().replace("WORLD", "Python")
print(result) # Вывод: HELLO Python
В этом примере:
strip()
удаляет пробелы в начале и в конце строки.upper()
преобразует строку в верхний регистр.replace()
заменяет подстроку «WORLD» на «Python».Можно создавать свои классы, которые поддерживают цепочку вызовов, возвращая self
из методов.
class NumberManipulator:
def __init__(self, value):
self.value = value
def add(self, number):
self.value += number
return self
def multiply(self, number):
self.value *= number
return self
def subtract(self, number):
self.value -= number
return self
def get_value(self):
return self.value
# Создание объекта и использование цепочки вызовов
manipulator = NumberManipulator(10)
result = manipulator.add(5).multiply(2).subtract(3).get_value()
print(result) # Вывод: 23
В этом примере:
add
добавляет число к значению и возвращает объект self
.multiply
умножает значение и возвращает объект self
.subtract
вычитает число из значения и возвращает объект self
.get_value
возвращает конечный результат.Чтобы поддерживать цепочку вызовов в собственных классах, каждый метод, который должен участвовать в цепочке, должен возвращать объект self
. Рассмотрим это на примере:
class StringBuilder:
def __init__(self, initial_text=""):
self.text = initial_text
def append(self, additional_text):
self.text += additional_text
return self
def prepend(self, additional_text):
self.text = additional_text + self.text
return self
def capitalize(self):
self.text = self.text.capitalize()
return self
def get_text(self):
return self.text
# Создание объекта и использование цепочки вызовов
builder = StringBuilder("world")
result = builder.prepend("Hello, ").capitalize().append("! How are you?").get_text()
print(result) # Вывод: Hello, world! How are you?
Сегодня мы изучили концепцию цепочки вызовов в Python. Вы узнали, как использовать методы как выражения и как создавать собственные методы для поддержки цепочек вызовов в своих классах. Эта техника позволяет делать код более лаконичным и удобочитаемым.
Наша цель и главная задача сделать качественное образование в вашем браузере
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024 Все права защищены. CodeFor.