在Python模块中检查类型是否存在

时间:2016-01-24 05:04:42

标签: python python-3.x

确定特定模块中是否包含对象类型的最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)"?

1 个答案:

答案 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)):