Unterschied zwischen int und numbers.Integral in Python

8

Ich versuche, ein tieferes Verständnis in Pythons Datenmodell zu bekommen, und ich verstehe den folgenden Code nicht vollständig:

%Vor%

Aus den obigen Gründen scheint int und number.Integral nicht in derselben Hierarchie zu liegen.

Aus der Python-Referenz (2.6.6) sehe ich

  

numbers.Integral - Dies sind Elemente aus dem mathematischen Satz von ganzen Zahlen (positiv und negativ).

Was ist der Unterschied zwischen int und numbers.Integral ? Hat es etwas mit der type int vs class numbers.Integral zu tun, die ich in der obigen Ausgabe sehe?

    
ElenaT 20.11.2011, 17:36
quelle

3 Antworten

8

numbers definiert eine Hierarchie abstrakter Klassen, die für numerische Typen mögliche Operationen definieren. Siehe PEP 3141 . Der Unterschied zwischen int und Integral besteht darin, dass int ein konkreter Typ ist, der alle Operationen Integral definiert unterstützt.

    
Cat Plus Plus 20.11.2011, 17:45
quelle
2
%Vor%

Integral ist eine abstrakte Basisklasse. int ist eine Unterklasse von ABCMeta Integral

    
joaquin 20.11.2011 17:44
quelle
2

Erlaube mir, zwei Dinge hinzuzufügen:

%Vor%

deckt auch long und

ab %Vor%

nicht. Der numbers.Integral -Test wäre näher bei

%Vor%

in Python 2 (Python 3 hat long für immer beendet.)

Ich bevorzuge den Test mit numbers.Integral , denn wenn Sie von int (oder long ) ableiten, bleibt isinstance(y, numbers.Integral) immer noch True .

    
Robert Siemer 17.08.2015 16:42
quelle

Tags und Links