您将如何测试对象是threading.Lock
还是multiprocessing.Lock
(以及它们各自的RLock
)? Python中的这些对象(至少3个)是工厂方法,因此您不能这样做:
isinstance(obj, threading.Lock)
这将给出:
TypeError: isinstance() arg 2 must be a type or tuple of types
答案 0 :(得分:3)
如果有实例,则可以获取其类型。所以简单的解决方案是做
threading_Lock = type(threading.Lock())
isinstance(obj, threading_Lock)
答案 1 :(得分:0)
简单方法:
isinstance(obj, type(threading.Lock()))