Встроенные функции и операторы Python на деле вызывают специальные методы объекта.
len(obj) означает obj.__len__(), а a + b превращается в a.__add__(b).Поэтому своему классу не нужен метод вроде
get_cart_len(). Достаточно определить __len__:>>> class Order:
... def __init__(self, cart, customer):
... self.cart = list(cart)
... self.customer = customer
...
... def __len__(self):
... return len(self.cart)
...
>>> order = Order(["banana", "apple", "mango"], "Real Python")
>>> len(order)
3Без
__len__ такой вызов упадёт с TypeError. И есть подвох: метод обязан вернуть целое число. Вернёте float, получите тот же TypeError.Так же класс можно научить работать с +, [] и bool() и даже стоять справа в выражении
6 + obj.👍 - если было полезно
@python_practics