Как переопределить тип возвращаемого значения __len__ в Python? ⇐ Python

Программы на Python
Anonymous
Как переопределить тип возвращаемого значения __len__ в Python?

Сообщение Anonymous »

Я пытаюсь реализовать класс Foo, который при вызове len(foo) будет возвращать экземпляр другого класса MyCoolIntType вместо int. Примерно следующее:

Код: Выделить всё

class Foo(object):
def __len__(self) -> MyCoolIntType:
return MyCoolIntType(self.size)
Конечно, я продолжаю получать сообщение об ошибке TypeError: объект MyCoolIntType не может быть интерпретирован как целое число.
Происходит то, что я себе представляю. заключается в том, что когда я вызываю len из stdlib, внутренняя реализация выполняет проверку типа, чтобы гарантировать, что результат obj.__len__() является целым числом и вызывает исключение.
Поэтому, я думаю, мой вопрос также можно интерпретировать как «Как мне повторно объявить функцию () из stdlib в Python?"
PS: Я знаю, что могу обойти это, просто объявив размер свойства в своем классе, но я любопытно, можно ли использовать len для возврата MyCoolIntType

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python

Вернуться в «Python»