[PYTHON] Achten Sie auf den Rückgabewert von __len__

Als ich "len" für meine Klasse überschrieb und aufrief, trat der folgende Fehler auf.

OverflowError: cannot fit 'int' into an index-sized integer

Die Ursache lag in der Spezifikation __len__. Anscheinend muss der Rückgabewert von "len" die folgenden Bedingungen erfüllen.


class ReturnStr(object):
    def __len__(self): return "abc"

class ReturnFloat(object):
    def __len__(self): return 1.0

class ReturnNegativeNumber(object):
    def __len__(self): return -1

class ReturnBigNumber(object):
    def __len__(self): return 0x7FFFFFFF + 1

class ReturnSmallNumber(object):
    def __len__(self): return 0x7FFFFFFF

if __name__ == "__main__":
    len(ReturnStr())            #=> TypeError: 'str' object cannot be interpreted as an integer
    len(ReturnFloat())          #=> TypeError: 'float' object cannot be interpreted as an integer
    len(ReturnNegativeNumber()) #=> ValueError: __len__() should return >= 0
    len(ReturnBigNumber())      #=> OverflowError: cannot fit 'int' into an index-sized integer
    len(ReturnSmallNumber())    #=> OK

In meinem Fall scheint es eine Ausnahme zu sein, weil der Rückgabewert von __len__ zu groß war (´ ・ ω ・`)

Recommended Posts

Achten Sie auf den Rückgabewert von __len__
Über den Rückgabewert von pthread_mutex_init ()
Über den Rückgabewert des Histogramms.
Achten Sie auf Randint
Achten Sie auf globale Variablen außerhalb von lambda_handler (datetime)
Die Geschichte, dass der Rückgabewert von tape.gradient () None war
Der Rückgabewert von len oder unichr kann sich ändern, je nachdem, ob es sich um UCS-2 oder UCS-4 handelt.
Finden Sie die Definition des Wertes von errno
Überprüfen Sie den Rückgabewert mit PEP 380
25.03.2015 Python> Mehrzeiliger Kommentar> Achten Sie auf Einrückungen
Die dritte Nacht der Runde mit für
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Ermitteln Sie den Wert der mittleren Schicht von NN
Die zweite Nacht der Runde mit für
Ruft den Rückgabewert eines externen Shell-Skripts (ls) mit python3 ab
Machen Sie den Standardwert des Arguments unveränderlich
Die Geschichte, dass die Lernkosten von Python niedrig sind
Der Wert von pyTorch torch.var () wird nicht verteilt
Versuchen Sie, die Daimyo-Matrix durch einen Singularwert zu zerlegen
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Bildverarbeitung? Die Geschichte, Python für zu starten
Finden Sie den Tag nach Datum / Uhrzeit heraus
Code zum Überprüfen des Betriebs von Python Matplot lib
Suchen Sie nach dem Wert der Instanz in der Liste
Rückgabewert von quit () - Gibt es etwas, das von der "Funktion, die alles beendet" zurückgegeben wird?
Hier finden Sie die Menge an freiem Speicher des Befehls free
[Python of Hikari-] Kapitel 06-04 Funktionen (Argumente und Rückgabewerte 3)
Fügen Sie Attribute von Klassenobjekten mit einer for-Anweisung hinzu
[Python of Hikari-] Kapitel 06-02 Funktion (Argument und Rückgabewert 1)
Um den Ort, an dem der Wert von Errbot gespeichert ist
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
Setzen Sie die Anzahl der Hot-codierten Features auf den ursprünglichen Kategoriewert zurück
[Python] Berechnen Sie den Durchschnittswert des Pixelwerts RGB des Objekts
Finden Sie die Version der Sprache heraus, die Sie ausführen
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
[C-Sprache] [Linux] Ruft den Wert der Umgebungsvariablen ab
Nehmen Sie den Wert des SwitchBot-Thermo-Hygrometers mit Raspberry Pi
Machen Sie den Standardwert des Arguments unveränderlich (Artikelerklärung)
Ich habe mir die Versionen von Blender und Python angesehen
Umschalten der Bot-Thermo-Hygrometer-Werte mit Raspberry Pi
Finden Sie den Speicherort der mit pip installierten Pakete heraus
[Golang] Geben Sie ein Array für den Wert der Karte an
Techniken zum Verständnis der Grundlagen von Deep-Learning-Entscheidungen
Machen Sie den Mangel an Maya Node-Referenz wieder wett
Überprüfen Sie, ob in Java BigQuery-Tabellen vorhanden sind
Weisen Sie dem Namen der zerlegten PDF-Datei für jede Seite ein Datum zu
[Django 2.2] Sortieren und erhalten Sie den Wert des Beziehungsziels
Dinge, die Sie bei der Migration mit Django beachten sollten
[Python of Hikari-] Kapitel 06-03 Funktionen (Argumente und Rückgabewerte 2)
[JVM] OOM (Out Of Memory) Erforderliche Kenntnisse zur Fehlerbehebung
[Für Anfänger] Quantifizieren Sie die Ähnlichkeit von Sätzen mit TF-IDF
Ich habe nach dem Inhalt von CloudWatch Logs Agent gesucht
[Linux] [C / C ++] So ermitteln Sie den Wert der Rücksprungadresse einer Funktion und den Funktionsnamen des Aufrufers