【发布时间】:2016-12-08 20:16:19
【问题描述】:
我对@987654321@ 在 Python 中的工作方式有点迷茫。之前用过这个函数,到现在为止,行为还是很清楚的。
一点上下文。我有一个类Classifier,它有一个方法set_kernel,可以将字符串或内核作为参数。我正在从主函数创建一个名为k 的内核类型对象。当我使用isinstance(k, Kernel) 时,答案是True。但是,如果我将k 作为参数传递给分类器,然后在函数内部进行相同的检查,它会返回False。
关于这里发生了什么的任何线索?我附上一些代码 sn-p 以使其更清晰:
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:我已经改进了编码并清理了所有与问题本身无关的东西。
【问题讨论】:
-
请注意,您可以使用更简单的示例(例如
str而不是sl_kernal)来演示此行为。 -
您发布的代码存在语法错误,无法编译。请发布实际可运行的代码,在运行时实际演示问题。
-
编辑纠正语法错误
标签: python inheritance isinstance