无法将cythonized模块与抽象静态方法一起使用

时间:2018-10-10 16:01:10

标签: python python-3.x cython

我正在尝试使用Cython转换我的Python模块之一。 Cython成功生成了一个.pyd文件,但是当我尝试导入它时,它失败了:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
>>> import example
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "example.py", line 6, in init example
    @abstractmethod
  File "C:\Program Files\Python3\lib\abc.py", line 23, in abstractmethod
    funcobj.__isabstractmethod__ = True
AttributeError: attribute '__isabstractmethod__' of 'staticmethod' objects is not writable

我的模块包含一个既抽象又静态的方法:

from abc import abstractmethod

class c:
    @abstractmethod
    @staticmethod
    def foo():
        raise NotImplementedError

根据https://docs.python.org/3/library/abc.html#abc.abstractmethod,这应该是可能的。如果删除@abstractmethod批注,则可以进行cythonize并导入该模块。如果我使用@abstractstaticmethod,它也可以工作,但是该装饰器在abc中已弃用。

这是Cython错误,还是我做错了什么? 我在Windows 7上使用Cython版本0.28.5和Visual Studio 2017的构建工具。

0 个答案:

没有答案