У меня есть класс, который по сути представляет собой набор/список вещей. Но я хочу добавить некоторые дополнительные функции в этот список. Я бы хотел:
- У меня есть экземпляр
li = MyFancyList()
. Переменнаяli
должна вести себя так, как она была в списке, когда я использую ее как список:[e for e in li]
,li.expand(...)
,for e in li
. - Плюс он должен иметь некоторые специальные функции, такие как
li.fancyPrint()
,li.getAMetric()
,li.getName()
.
В настоящее время я использую следующий подход:
class MyFancyList:
def __iter__(self):
return self.li
def fancyFunc(self):
# do something fancy
Это нормально для использования в качестве итератора типа [e for e in li]
, но у меня нет полного поведения в списке, например li.expand(...)
.
Первое предположение - наследовать list
в MyFancyList
. Но является ли это рекомендуемым питоническим способом? Если да, то что считать? Если нет, то какой будет лучший подход?