首页 > 解决方案 > 之前返回“True”的hasattr(),代码转换成cython后返回“False”

问题描述

我在 python 中创建了一个简单的类并检查它是否具有某个属性。在 hasattr() 返回 True 之后,我尝试在 Cython 中重写它,然后 hasattr() 返回 False。

在 python 中看这个例子:

class Foo_p:
    def __init__(self, val):
        self.val = val
    def printVal(self):
        print(self.val)

a=Foo_p(5)
print(hasattr(a,"val"))

这个例子打印“真”。

现在我尝试在 Cython 中重写它:

%load_ext Cython
%%cython
cdef class Foo_c:
    cdef int val

    def __init__(self, int val):
        self.val = val
    def printVal(self):
        print(self.val)

b=Foo_c(5)
print(hasattr(b,"val"))

现在它打印“假”

有人知道发生了什么吗?

标签: pythoncythonhasattr

解决方案


推荐阅读