Как правильно добавить свой метод в namedtuple?
Есть вот такой "игрушечный" пример
class Car:
def __init__(self, color, mileage):
self.color = color
self.mileage = mileage
def check_mileage(self):
if self.mileage > 10000:
print('Машина с большим пробегом')
else:
print('Машина с маленьким пробегом')
Но если я пробую переписать это на namedtuple
, то с методом проблемы:
from collections import namedtuple
Car = namedtuple('Авто' , 'color mileage check_mileage')
def check_mileage(self):
if self.mileage > 10000:
print('Машина с большим пробегом')
else:
print('Машина с маленьким пробегом')
c1 = Car('Красный', 14000, check_mileage)
c1.check_mileage() # TypeError: check_mileage() missing 1 required positional argument: 'self'
c1.check_mileage(c1) # Машина с большим пробегом
Я отдельно объявил функцию и её передал как один из аргументов. Но она почему-то теряет self
, поэтому каждый раз приходится передавать его явно.
В книге нет примера с методами. Можно ли написать так, чтобы self
не передавать каждый раз?
Источник: Stack Overflow на русском