我对isinstance()
Python 的工作原理有点迷茫。我以前用过这个函数,行为很清楚,直到现在。
一点上下文。我有一个类Classifier
,它有一个set_kernel
可以将字符串或内核作为参数的方法。我正在从 main 函数创建一个名为 .kernel 的内核类型的对象k
。当我使用isinstance(k, Kernel)
答案是True
。但是,如果我k
作为参数传递给分类器,然后在函数内部进行相同的检查,它会返回False
.
关于这里发生了什么的任何线索?我附上了一些代码片段以使其更清晰:
class Kernel(object):
pass
class Gaussian(Kernel):
pass
class Classifier():
def set_kernel(kernel, *args):
print isinstance(kernel, Kernel) # This prints False
k = Gaussian() # This is a son of Kernel
print isinstance(k, Kernel) # This prints True
c = Classifier()
c.set_kernel(k) # This prints False, check above
谢谢!
编辑1:我改进了编码并清理了所有与问题本身无关的东西。