【发布时间】:2019-05-10 16:40:50
【问题描述】:
我在对我的 python 代码进行 cythonizing 时遇到问题。我试图重现我遇到的最简单的错误情况。
这是我想要cythonize的代码的插图:
def some_decorator_with_arg(arg):
def decorator(func):
def wrapper(x):
return func(x) + arg
return wrapper
return decorator
class some_class():
def __init__(self):
pass
@staticmethod
@some_decorator_with_arg(1)
def some_method(a):
return a
print(some_class().some_method(1))
这在纯 python 中没有问题。但是当我对这段代码进行cythonize时,它会在运行时引发错误:
打印(some_class().some_method(1))
TypeError: wrapper() 只接受一个参数(给定 2 个)
编译运行没有问题。如果我写@some_decorator_with_arg(arg=1) 我会得到另一个错误:
@some_decorator_with_arg(arg=1)
TypeError: some_decorator_with_arg() 没有关键字参数
有人知道解决这个问题的方法吗?
【问题讨论】:
标签: python cython python-decorators cythonize