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

Использование магических методов Python для сравнения Tesla и Ford

Волшебные методы – это специальные методы, которые дают нам возможность доступа к встроенной синтаксической … Теги с Python.

Магические методы – это специальные методы, которые дают нам возможность доступа к встроенным синтаксическим признакам, таким как «<», «>», + ‘и т. Д.

Вы, должно быть, работали с такими методами, не зная их как магические методы. Волшебные методы могут быть идентифицированы с их именами, которые начинаются с __ и заканчиваются __, как __init__ , __call__ , __str__ и т.п. Эти методы также называют Dunder Methods из-за их имени, начинающегося и заканчивающегося двойным подчеркиванием (dunder).

Сейчас существует ряд таких специальных методов, которые вы могли бы поблагодарить, в Python. Мы просто будем примером нескольких из них, чтобы понять, как они работают и как мы можем их использовать.

1. __init__

class AnyClass:
    def __init__():
        print("Init called on its own")
obj = AnyClass()

Первый пример это init И, как следует из названия, он используется для инициализации объектов. Метод init вызывается самостоятельно, т. Е. Всякий раз, когда объект создан для класса, init Метод называется самостоятельно.

Выход вышеуказанного кода будет приведен ниже. Обратите внимание, как мы не позвонили методу INIT, и оно было вызвано, поскольку мы создали объект для класса AnyClass. Init вызывал самостоятельно

2. __add__

Давайте перейдем к другому примеру, Добавить Дает нам возможность доступа к встроенной функции синтаксиса символа +. Давайте посмотрим, как,

class AnyClass:
    def __init__(self, var):
        self.some_var = var
    def __add__(self, other_obj):
        print("Calling the add method")
        return self.some_var + other_obj.some_var
obj1 = AnyClass(5)
obj2 = AnyClass(6)
obj1 + obj2

Как мы используем символ +, это позвонит Добавить метод. Теперь соблюдайте Добавить , Он ожидает, что второй аргумент будет ittle_obj, и, следовательно, у нас есть доступ, чтобы добавить не только quote_var другого объекта, но любую другую перемему. Вывод будет,

"Calling the add method"
11

Похоже на Добавить С мы можем иметь

  1. __eq__ (Self, Other_obj) определяет поведение для оператора равенства ==.
  2. __ne__ (Self, Other_obj) Определяет поведение для оператора неравенства! =.
  3. __lt__ (Self, ord_obj) определяет поведение для менее чем оператора, <.
  4. __gt__ (self, itthy_obj) определяет поведение для более чем больше, чем оператор,>.
  5. __le__ (Self, itthy_obj) определяет поведение для оператора меньше или равно или равно, <=.
  6. __ge__ (Self, itthy_obj) определяет поведение для оператора большего или равна,> =.

3. __repr__

Он используется для представления объекта. Это дает все представительство всей информации объекта. Мы будем больше понять об этом в примере позже. Если мы создадим объект класса AnyClass из предыдущего примера, и выполнить ROP (OBJ) или Print (OBJ), это вернет '<__ main __. OnlyClass объект на 0x0000025B8FB75048>' Давайте добавим репре Метод нашего любого класса и увидеть «магию».

class AnyClass:
    def __init__(self, var):
        self.some_var = var
def __repr__(self):
        print(f"AnyClass with some_var value as {self.some_var}")
obj = AnyClass(5)
print(obj)

Выход из указанного примера будет, AnyClass с именем uver_var как 5

Теперь давайте будем использовать эти магические методы и сравнить Tesla Model 3 и Ford Mustang

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

class Car:
    def __init__(self, name, manufacturer, horsepower, top_speed, cost, length):
        self.name = name
        self.manufacturer = manufacturer
        self.horsepower = horsepower
        self.top_speed = top_speed
        self.cost = cost
        self.length = length
    def __sub__(self, other):
        print(f"Difference In Price: {self.cost - other.cost}")
        print(f"Difference in Horsepower: {self.horsepower -     other.horsepower}")
        print(f"Difference in Top Speed: {self.top_speed -   other.top_speed}")
    def __len__(self):
        return f"{self.length}m"

Если мы запустим эту программу и команду,

tesla = Car(name='Model 3', manufacturer='Tesla', horsepower=283, top_speed=129, cost=35000, length=4.69)
ford = Car(name='Mustang Mach E', manufacturer='Ford', horsepower=282, top_speed=132, cost=25100, length=4.72)
ford - tesla
len(ford)
len(tesla)

Вернется нам, Разница в цене: $ 8895 Разница в лошадиных силах: -1 Разница в максимальной скорости: 3 4,72 м 4,69 м

Оператор «-» дал нам разницу в цене, мощности и скорости, это не менее «магии», если вы не знаете, как это работает. Но теперь мы знаем, и давайте реализуем другие методы. И Лен дал нам длину автомобилей, то есть. Атрибут длины объекта автомобиля.

По этой программе мы сможем запустить команды, такие как Тесла Тесла, Тесла <Форд так далее..

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

Оригинал: “https://dev.to/shivambats/using-python-s-magic-methods-to-compare-tesla-and-ford-338f”