В огромном мире программирования методы играют решающую роль в выполнении определенных действий или операций над объектами. В то время как обычные вызовы методов являются распространенным способом вызова функциональности, вызовы операторных методов добавляют немного волшебства, позволяя нам использовать такие операторы, как +, -, * и /, для выполнения пользовательских операций. В этой статье мы углубимся в разницу между этими двумя типами вызовов методов, используя простой язык и примеры кода, чтобы воплотить эти концепции в жизнь.
Обычные вызовы методов.
Начнем с обычных вызовов методов. Это основа объектно-ориентированных языков программирования. Когда вы создаете объект, вы можете вызывать его методы, используя запись через точку (object.method()). Обычные вызовы методов вызываются с использованием имени объекта, за которым следует точка, а затем имя метода вместе со всеми необходимыми аргументами. Вот простой пример на Python:
# Ordinary method call
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
my_rectangle = Rectangle(5, 3)
print(my_rectangle.area()) # Output: 15
В приведенном выше коде мы создаем класс Rectangle с методом area. Затем мы создаем экземпляр класса Rectangle с именем my_rectangleи вызываем его метод area(), используя точечную запись. В результате вычисляется и печатается площадь прямоугольника.
Вызовы методов оператора.
С другой стороны, вызовы методов оператора позволяют определять собственное поведение для таких операторов, как +, -, *, / и т. д. Это означает, что вы можете заставить объекты ваших собственных классов работать с этими операторами, как если бы они были встроенными типами. Давайте посмотрим на пример Python, чтобы лучше понять это:
# Operator method call
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
v1 = Vector(1, 2)
v2 = Vector(3, 4)
result = v1 + v2
print(result.x, result.y) # Output: 4 6
В приведенном выше коде мы определяем класс Vector с методом __add__, который вызывается, когда оператор +используется с объектами Vector. Этот метод выполняет сложение соответствующих координат (xи y), создавая в результате новый объект Vector.
Подводя итог, можно сказать, что обычные вызовы методов используются для вызова предопределенных методов для объектов с использованием точечной нотации, а вызовы методов операторов позволяют вам определять собственное поведение для операторов в ваших собственных классах. Используя вызовы операторных методов, вы можете наделить свои объекты магическими способностями, благодаря чему они будут беспрепятственно работать с операторами, как и встроенные типы.
Итак, в следующий раз, когда вы будете создавать объектно-ориентированный код и захотите предоставить своим объектам дополнительные возможности, помните о различии между обычными вызовами методов и вызовами операторных методов и выберите подходящий подход.