我正在使用比较:
if type( self.__dict__[ key ] ) is str \
or type( self.__dict__[ key ] ) is set \
or type( self.__dict__[ key ] ) is dict \
or type( self.__dict__[ key ] ) is list \
or type( self.__dict__[ key ] ) is tuple \
or type( self.__dict__[ key ] ) is int \
or type( self.__dict__[ key ] ) is float:
我曾经发现,我错过了bool类型:
or type( self.__dict__[ key ] ) is bool \
,
好的 - 我想知道我错过了哪些其他类型?
我开始谷歌搜索:
Python有许多本机数据类型。以下是重要的内容:
为什么到处都有人在谈论多种类型,但我找不到所有这些类型的列表?它几乎总是只有重要的
答案 0 :(得分:2)
您可以对__builtin__
的{{3}}进行迭代,并使用__dict__
查看某些内容是否属于某个类:
builtins = [e for (name, e) in __builtin__.__dict__.items() if isinstance(e, type) and e is not object]
>>> builtins
[bytearray,
IndexError,
SyntaxError,
unicode,
UnicodeDecodeError,
memoryview,
NameError,
BytesWarning,
dict'
SystemExit
...
(请注意,正如@ user2357112在优秀评论中指出的那样,我们明确排除了object
,因为它没用。)
另请注意,isinstance
可以将元组作为第二个参数,您可以使用它来代替您的if
系列。因此,你可以这样写:
builtins = tuple([e for (name, e) in __builtin__.__dict__.items() if isinstance(e, type) and not isinstance(object, e)])
>>> isinstance({}, builtin_types)
True