【发布时间】:2021-12-03 02:37:45
【问题描述】:
我有一个班级列表:
[<class 'str'>, <class 'str'>, <class 'str'>, <class 'str'>, <class 'datetime.date'>, <class 'decimal.Decimal'>, <class 'decimal.Decimal'>, <class 'str'>, <class 'datetime.date'>, <class 'decimal.Decimal'>, <class 'decimal.Decimal'>, <class 'decimal.Decimal'>]
我想做一个类似于 isinstance() 的布尔测试:
[isinstance(x, str) for x in l]
但是 isinstance() 只接受对象而不接受类。
我想要的结果,对于上面的列表来测试一个类是否是一个字符串,应该是这样的:
[True, True, True, True, False, False, False, True, False, False, False, False]
【问题讨论】:
-
使用
issubclass而不是isinstance。 -
类是对象。问题是 class
str不是str的实例;它是type的一个实例。它是自己的子类,但是(如果您不担心子类化)您可以与is进行直接类比较:[x is str for x in l]。 -
谢谢@chepner! issubclass 工作。
标签: python boolean conditional-statements python-class