(Python 3.x) Хочу создать, что то типа своей переменной

Хочу сделать, что то типа своей переменной Fuel. Fuel это целое(int) число, но со своими доп. методами. Спрашивал у гугла, но он не понимает, что я от него хочу. В виде ответа согласен на ссылку, где объясняется как создавать свои переменные в Python.

В общем, какой магический метод нужно переопределить в классе Fuel, чтобы ниже приведенные примеры заработали так как мне нужно? (см. код)

class Fuel:
    def __init__(self, liter):
        self.liter = liter

    def __add__(self, other):
        return self.liter + other.liter

    def __sub__(self, other):
        return self.liter - other.liter

    def get_distance(self, car):
        return self.liter / car.fuel_consumption
    # ... дальше идут очень нужные методы =)


# пример №1
# какой магический метод нужно переопределить в классе Fuel, чтобы ниже приведенный пример заработал?
barrels = [Fuel(700), Fuel(300), Fuel(500), Fuel(200), Fuel(300)]
print(sum(barrels))

# пример №2
# какой магический метод нужно переопределить в классе Fuel, что бы оба принта печатали это: <class 'int'> 123
barrel = Fuel(123)
print(type(barrel.liter), barrel.liter)  # <class 'int'> 123
print(type(barrel), barrel)  # <class 'int'> 123

Ответы (2 шт):

Автор решения: my diamonds dancing

Насчёт первого варианта: используйте магический метод __radd__(self, other), где возвращайте self.liter + other.

Переработанный код выглядит так:

class Fuel:
    def __init__(self, liter):
        self.liter = liter

    def __radd__(self, other):
        return self.liter + other

barrels = [Fuel(700), Fuel(300), Fuel(500), Fuel(200), Fuel(300)]
print(sum(barrels)) >>> 2000
→ Ссылка
Автор решения: Amader

В общем все оказалось намного проще, просто нужно было унаследовать класс int. Еще, не до конца понял как это работает, нужно попрактиковаться. Я только изучаю Python и это мой пробел в ооп, так что сильно не пинайте =)

class Fuel(int):
    def __init__(self, liter):
        super().__init__()
        self.liter = liter

    def get_distance(self, car):
        return self.liter / car.fuel_consumption
    # ... дальше идут еще очень нужные методы =)


barrels = [Fuel(700), Fuel(300), Fuel(500), Fuel(200), Fuel(300)]
print(sum(barrels))  # 2000

barrel1 = Fuel(123)
barrel2 = Fuel(111) + Fuel(222)
print(type(barrel1.liter), barrel1.liter)  # <class 'int'> 123
print(type(barrel2), barrel2)  # <class 'int'> 333

Вывод программы:

2000
<class 'int'> 123
<class 'int'> 333
→ Ссылка