Verwenden Sie isinstance(b, set)
.
Die types
Verweise auf eingebauten Typen gibt es nur für die Bequemlichkeit * und sonst veraltet sind (sie vom Python 3.x version of the types
module entfernt wurden). Als solche wurde set
nie hinzugefügt.
Zum Beispiel types.ListType
ist nur ein Alias für list
:
>>> import types
>>> types.ListType is list
True
>>> isinstance([1, 2, 3], list)
True
Wenn Sie Muss haben eine SetType
Referenz im types
Modul, fügen Sie einfach den Alias selbst:
types.SetType = set
Wenn Sie suchen nach einer abstrakten Basisklasse für den grundlegenden Containertyp, verwenden Sie die collections
module ABCs; dieses Signal was Methoden eine Art Unterstützung und Kontrolle gegen diese Art können Sie eine breitere Palette von Typen, die spezifischen Operationen lassen erkennen (und nicht seine eine Instanz nur die list
und set
Typen) unterstützen:
>>> from collections import Set, MutableSequence
>>> isinstance([1, 2, 3], MutableSequence)
True
>>> isinstance({1, 2, 3}, Set)
True
*Geschichte Lektion: Es war einmal, die eingebauten Typen wie int
und list
waren nicht wirklich Klassen, und die eingebauten Namen int()
und list()
waren einfach Funktionen in die integrierten Typen konvertieren. Das bedeutet, dass die Namen einfach nicht das gleiche Objekt wie types.IntType
und types.ListType
waren und Sie hatten, um das types
Modul zu verwenden, um isinstance()
für ein Listenobjekt verwenden zu können. Diese Zeit ist jetzt lang, lange hinter uns, und die Rolle des types
Moduls hat sich geändert.
'isinstance (a, list)' und 'isinstance (b, set)' geben True zurück. – fedorqui