Возможно, это не тот ответ, который вы ищете, но я бы не сделал этого, если бы был вами (и я уверен, что вы не можете легко, так или иначе).
Причина, по которой вам не следует, заключается в том, что python использует len
внутренне на своих объектах для выполнения определенных операций. Другая причина - чистая сломанная логика. Определенная выше функция len
вернет отрицательную длину для пустых списков или пустых вещей. Это кажется мне очень неприятным.
Что вы делаете может do, переопределяет метод длины только на определенных классах (это может иметь для вас большой смысл). Для этого вы можете использовать перегрузку операторов, просто переопределить метод __len__
в классе:
class MyList(object):
def __len__(self,):
# Do your thing
Вы также можете посмотреть в мета-классы, есть очень хороший stack overflow вопрос по этому вопросу.
Спасибо! Работала отлично для меня :) – DorianOlympia
** '__builtins__' - частная деталь реализации в CPython. ** Вы должны явно импортировать модуль' builtins' (или '__builtin__' в Python 2). – ppperry