确定特定模块中是否包含对象类型的最Pythonic方法是什么?
例如,我想说我想从datetime模块中匹配日期,时间和日期时间类。
import datetime
mylist = [obj1, obj2, obj3, ...]
for obj in mylist:
if type(obj) in [datetime.datetime, datetime.time, datetime.date]:
#Do thing
为每个循环创建三个匹配实例似乎很愚蠢。是否有一些更简单的说法"如果在某个模块中键入(obj)"?
答案 0 :(得分:3)
isinstance()
可以针对多种类型进行检查:
isinstance(object, classinfo)
如果object参数是
classinfo
参数的实例,或者是(直接,间接或虚拟)子类的实例,则返回true。如果object不是给定类型的对象,则该函数始终返回false。 如果classinfo
是类型对象的元组(或递归,其他此类元组),如果object是任何类型的实例,则返回true。如果classinfo
不是类型和类型元组的类型或元组,则会引发TypeError
异常。
if isinstance(obj, (datetime.datetime, datetime.time, datetime.date)):