Я пытаюсь конвертировать один из моих модулей Python, используя Cython.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, я могу цитонизировать и импортировать модуль.Это также работает, если я использую @abstractstaticmethod, но этот декоратор устарел в abc.
Это ошибка Cython, или я делаю что-то не так?Я использую Cython версии 0.28.5 с инструментами сборки для Visual Studio 2017 на Windows 7.