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"))
この例では、「True」が出力されます。
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"))
そして今、それは「False」を出力します
何が起こったのか知っている人はいますか?