测试对象是否为锁

时间:2019-03-06 01:51:11

标签: python python-multiprocessing python-multithreading standard-library factory-method

您将如何测试对象是threading.Lock还是multiprocessing.Lock(以及它们各自的RLock)? Python中的这些对象(至少3个)是工厂方法,因此您不能这样做:

isinstance(obj, threading.Lock)

这将给出:

TypeError: isinstance() arg 2 must be a type or tuple of types

2 个答案:

答案 0 :(得分:3)

如果有实例,则可以获取其类型。所以简单的解决方案是做

threading_Lock = type(threading.Lock())
isinstance(obj, threading_Lock)

答案 1 :(得分:0)

简单方法:

isinstance(obj, type(threading.Lock()))