2012-07-20 8 views
6

Angenommen, ich habe eine Basisklasse in Python 3, die einen numberartigen Datentypen darstellt. Ich möchte es so machen, wenn ich eine Instanz, x, dieser Klasse habe, kann ich int (x) aufrufen und meine Conversion-Funktion aufrufen, um den ganzzahligen Teil zurückzugeben.Overload int() in Python

Ich bin sicher, das ist einfach, aber ich kann nicht herausfinden, wie es geht.

Antwort

13

Sie überschreiben die __int__ magische Methode gemäß dem folgenden Beispiel ...

class Test: 
    def __init__(self, i): 
     self.i = i 
    def __int__(self): 
     return self.i * 2 

t = Test(5) 
print(int(t)) 
# 10 
7

Überschreiben Sie die __int__() Methode.

+0

Bin ich richtig in der Annahme dieses in Python 3 ist neu? –

+2

@Joel: [nicht im mindesten.] (Http://docs.python.org/reference/datamodel.html#object.__complex__) –

+0

Sie lernen jeden Tag etwas Neues! Obwohl ich überrascht bin, habe ich das beim Lesen der Dokumente übersehen: P –