Подавление атрибутов из агрегатов - PullRequest
1 голос
/ 08 апреля 2019

BigTuple наследует список кортежей и агрегатов. __repr__ не работает должным образом. То есть должен выдавать BigTuple(*(1,2,3)), но вместо этого использует функцию repr списка, который он агрегирует. Как я могу подавить это поведение и использовать __repr__, определенный в классе BigTuple. Я объединяю список, потому что хочу отсортировать элементы, предоставленные при инициализации

Я пробовал не агрегировать список. Пример:

self.__values = values 

вместо агрегации:

self.__values = sorted(values)

См. Основной код ниже

class BigTuple(tuple):

    def __init__(self, *values):

        self.__values = sorted(values)

    def __iadd__(self, other):
        assert hasattr(other, "__iter__")," Not an iterable"

        self.__values.extend(other)
        return self.__values

    def __repr__(self):  
        return 'BigTuple(*{!r})'.format(self.__values)



 cd = BigTuple((1,2,4,[5]))

 repr(cd)  # [1,2,4,[5]] instead of BigTuple(*(1,2,4,[5]))
...