Код: Выделить всё
class RPN(list):
def evaluate(self, vars):
# evaluate the RPN expression
pass
def to_infix(self):
# convert to infix form
pass
@staticmethod
def from_infix(expr):
# create new RPN object from infix expression sting
pass
Моя проблема в том, что я хочу выполнять с этими объектами RPN операции, подобные спискам, такие как добавление, сложение, разрезание и т. д., но когда я это делаю они возвращаются к обычным старым спискам (кроме добавления - это нормально).
Итак, например:
Код: Выделить всё
rpn1 = RPN([5, 6, operator.add])
rpn2 = RPN([7, 8, operator.add])
rpn3 = rpn1 + rpn2
# type(rpn3) == list
rpn4 = rpn1[0:1]
# type(rpn4) == list
Есть ли лучший способ?
Обратите внимание, это Вопрос был помечен как дубликат вопроса «Как использовать понимание списка в производном классе списка». В отмеченном сообщении задавался вопрос о том, как использовать понимание списков внутри производного класса списка (и странным образом, переназначая переменную self внутри функции __init__), я спрашиваю о чем-то совершенно другом. Так уж получилось, что обе проблемы решаются с помощью Collections.UserList, но сами вопросы, ИМХО, не являются дубликатами.
Подробнее здесь: https://stackoverflow.com/questions/791 ... class-when