首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >等实例函数的奇异性态

等实例函数的奇异性态
EN

Stack Overflow用户
提问于 2014-12-14 06:04:39
回答 2查看 415关注 0票数 6

我在模块Factor.py (https://github.com/pgmpy/pgmpy/blob/dev/pgmpy/factors/Factor.py)中有一个名为factor_product的类,在Factor.py中还有一个名为factor_product的函数,如下所示:

代码语言:javascript
复制
def factor_product(*args):
    if not all(isinstance(phi, Factor) for phi in args):
            raise TypeError("Input parameters must be factors")
    return functools.reduce(lambda phi1, phi2: _bivar_factor_operation(phi1, phi2,     
                                                            operation='M'), args)

现在,如果我甚至将Factor的实例传递给函数,它仍然会抛出TypeError。在if语句上方设置断点的调试器中有几行:

代码语言:javascript
复制
(Pdb) args
args = (<pgmpy.factors.Factor.Factor object at 0x7fed0faf76a0>, <pgmpy.factors.Factor.Factor object at 0x7fed0faf7da0>)

(Pdb) isinstance(args[0], Factor)
False

(Pdb) type(args[0])
<class 'pgmpy.factors.Factor.Factor'>

(Pdb) Factor
<class 'pgmpy.factors.Factor.Factor'>

知道为什么会这样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-14 07:54:57

reload是从同一个模块获得同一个类的两个副本的好方法:一个是在重新加载之前(如果该类的任何实例仍在潜伏),另一个来自之后。

很可能您有新类型的对象,但是Factor引用旧类型,因为它是在一段时间前导入的。因此,您的对象并不是Factor的实例,这是完全正确的。无论如何,不是那个Factor

永远不要相信reload。:)

票数 6
EN

Stack Overflow用户

发布于 2014-12-14 07:03:16

如果对象参数是classinfo参数的实例,或者它的(直接、间接或虚拟)子类的实例,则等实例返回true,如果将类的实例传递给它--而不是类本身--,请参见下面的示例:

代码语言:javascript
复制
>>> class A :
...  pass
... 
>>> isinstance(A,A)
False
>>> isinstance(A(),A)
True
>>> z=A()
>>> isinstance(z,A)
True 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27466803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档