草庐IT

issubclass

全部标签

当从未调用 issubclass() 时,Python 在 issubclass() 上抛出 TypeError

我有一段代码在大部分时间都运行得很好,但每隔一段时间我就会在回溯中遇到这个错误:File"/path/to/somefile.py",line272,insomefilesm=-0.5*(wv[0]**2./sm2+numpy.log(2.*numpy.pi*sm2))TypeError:issubclass()arg2mustbeaclassortupleofclasses我知道issubclass()的作用并理解错误,但我从未调用过它;代码中的那一行是纯算术,所以我不知道为什么首先会引发此TypeError。我唯一的理论是Numpy在幕后调用它,但回溯应该显示Numpy源代码中有问

python - 如何检查类型是否是 Python 中类型的子类型?

如何检查一个类型是否是Python中一个类型的子类型?我不是指类型的实例,而是比较类型实例本身。例如:classA(object):...classB(A):...classC(object)...#Checkthatinstanceisasubclassinstance:isinstance(A(),A)-->Trueisinstance(B(),A)-->Trueisinstance(C(),A)-->False#Whataboutcomparingthetypesdirectly?SOME_FUNCTION(A,A)-->TrueSOME_FUNCTION(B,A)-->True

python - 如何判断一个类是否是另一个类的后代

我有一个接受类(不是实例)的函数,并且根据它是特定类还是它的子类,我需要将它传递给两个之一其他(第三方)工厂功能。(为了防止任何异议,我知道这不是很Pythonic,但我依赖于第三方库接受的内容。)issubclass仅适用于实例,不适用于类对象本身。我想我可以实例化类,执行issubclass并丢弃实例,但这似乎有点浪费。这是我目前正在做的,依靠内置的mro属性来判断某个类是否在我类的祖先列表中。这安全吗,还有更好的方法吗?ifGenericClassinmyclass.__mro__:result=generic_factory(myclass)else:result=other_

python - issubclass() 对从不同路径导入的同一类返回 False

目的是实现某种插件框架,其中插件是同一基类(即A)的子类(即B)。基类使用标准导入加载,而子类使用imp.load_module()从知名包(即pkg)的路径加载。pkg/__init__.pymod1.pyclassAmod2.pyclassB(pkg.mod1.A)这对真正的子类来说效果很好,即#test_1.pyimportpkgfrompkgimportmod1importimptup=imp.find_module('mod2',pkg.__path__)mod2=imp.load_module('mod2',tup[0],tup[1],tup[2])print(issubc

python - python中isinstance的issubclass等价物是什么?

给定一个对象,我如何判断它是一个类还是给定类Foo的子类?例如classBar(Foo):passisinstance(Bar(),Foo)#=>Trueissubclass(Bar,Foo)# 最佳答案 它的工作方式完全符合人们的预期...classFoo():passclassBar(Foo):passclassBar2():passprintissubclass(Bar,Foo)#Trueprintissubclass(Bar2,Foo)#False如果您想知道某个类的实例是否派生自给定的基类,您可以使用:bar_instan