Dies ist vielleicht nicht die Antwort, die Sie suchen, aber ich würde dies nicht tun, wenn ich Sie wäre (und ich bin mir ziemlich sicher, dass Sie nicht leicht, sowieso).
Der Grund, warum Sie nicht sollten, ist, dass Python intern len
auf seine Objekte verwendet, um bestimmte Operationen durchzuführen. Ein anderer Grund ist reine gebrochene Logik. Ihre oben definierte len
Funktion würde eine negative Länge für leere Listen oder leere Dinge zurückgeben. Das scheint mir ziemlich kaputt zu sein.
Was Sie können tun, ist die Längenmethode nur auf bestimmte Klassen überschreiben (das könnte eine Menge Sinn für Sie). Dazu Sie Betreiber Überlastung verwenden können, außer Kraft setzen nur die Methode __len__
in Ihrer Klasse:
class MyList(object):
def __len__(self,):
# Do your thing
Sie auch in Meta-Klassen suchen möchten, gibt es eine sehr gute stack overflow Frage zu diesem Thema ist.
Danke! Arbeitete gut für mich :) – DorianOlympia
** '__builtins__' ist ein privates Implementierungsdetail in CPython. ** Sie sollten stattdessen explizit das' builtins' Modul (oder '__builtin__' in Python 2) importieren. – ppperry