需要一种方法来检查一个对象是否是某个特定模块中任何类的实例。我知道我可以通过从该模块显式导入每个类并使用元组检查来做到这一点:frommy_moduleimportClassOne,ClassTwo>>>isinstance(my_obj,(ClassOne,ClassTwo))True但实际上,我从中导入的模块中有大量的类,显式导入它们似乎是不必要的冗长,使用它们来构建一个巨大的元组,并对其进行类型检查。我已经尝试了一些方法来避免这种情况:importmy_module#Testmy_objagainstthemoduleitself>>>isinstance(my_obj,my_m
需要一种方法来检查一个对象是否是某个特定模块中任何类的实例。我知道我可以通过从该模块显式导入每个类并使用元组检查来做到这一点:frommy_moduleimportClassOne,ClassTwo>>>isinstance(my_obj,(ClassOne,ClassTwo))True但实际上,我从中导入的模块中有大量的类,显式导入它们似乎是不必要的冗长,使用它们来构建一个巨大的元组,并对其进行类型检查。我已经尝试了一些方法来避免这种情况:importmy_module#Testmy_objagainstthemoduleitself>>>isinstance(my_obj,my_m
一个语义问题,真的。直到最近,如果我必须对结构进行任何类型检查,我会使用type(obj)islist等。人。但是,自从加入SO以来,我注意到每个人(我的意思是EVERYONE)都使用isinstance(obj,list)代替。似乎它们是同义词,timeit揭示了它们之间几乎相同的速度。defa():returntype(list())islistdefb():returnisinstance(list(),list)fromtimeitimporttimeittimeit(a)#0.5239454597495582timeit(b)#0.5021292075273176事实上,即使
一个语义问题,真的。直到最近,如果我必须对结构进行任何类型检查,我会使用type(obj)islist等。人。但是,自从加入SO以来,我注意到每个人(我的意思是EVERYONE)都使用isinstance(obj,list)代替。似乎它们是同义词,timeit揭示了它们之间几乎相同的速度。defa():returntype(list())islistdefb():returnisinstance(list(),list)fromtimeitimporttimeittimeit(a)#0.5239454597495582timeit(b)#0.5021292075273176事实上,即使
我正在使用Python,每当我必须验证函数输入时,我都会假设输入有效,然后发现错误。在我的例子中,我有一个通用的Vector()类,我用它来做一些不同的事情,其中之一就是加法。它既可用作Color()类,也可用作Vector(),因此当我向Color()添加标量时,它应该将该常量添加到每个单独的组件中。Vector()和Vector()添加需要按组件添加。此代码用于光线追踪器,因此任何速度提升都很棒。这是我的Vector()类的简化版本:classVector:def__init__(self,x,y,z):self.x=xself.y=yself.z=zdef__add__(se
我正在使用Python,每当我必须验证函数输入时,我都会假设输入有效,然后发现错误。在我的例子中,我有一个通用的Vector()类,我用它来做一些不同的事情,其中之一就是加法。它既可用作Color()类,也可用作Vector(),因此当我向Color()添加标量时,它应该将该常量添加到每个单独的组件中。Vector()和Vector()添加需要按组件添加。此代码用于光线追踪器,因此任何速度提升都很棒。这是我的Vector()类的简化版本:classVector:def__init__(self,x,y,z):self.x=xself.y=yself.z=zdef__add__(se
我有一个方法,我希望它能够接受单个字符串(路径,但不一定存在于运行代码的机器上)或字符串列表/元组。鉴于字符串充当字符列表,我如何判断该方法接收到的是哪种类型?我希望能够接受单个条目的标准或unicode字符串,以及多个列表或元组,因此isinstance似乎不是答案,除非我错过了一个聪明的技巧(比如利用共同的祖先类?)。Python版本是2.5 最佳答案 您可以检查变量是字符串还是unicode字符串Python3:isinstance(some_object,str)Python2:isinstance(some_object,
我有一个方法,我希望它能够接受单个字符串(路径,但不一定存在于运行代码的机器上)或字符串列表/元组。鉴于字符串充当字符列表,我如何判断该方法接收到的是哪种类型?我希望能够接受单个条目的标准或unicode字符串,以及多个列表或元组,因此isinstance似乎不是答案,除非我错过了一个聪明的技巧(比如利用共同的祖先类?)。Python版本是2.5 最佳答案 您可以检查变量是字符串还是unicode字符串Python3:isinstance(some_object,str)Python2:isinstance(some_object,