,当我试图让Python的修改列表类基于一个项目,我的工作,并决定尝试用Cython用Cython的扩展模块类的方法不可见/起名错误提到
加快步伐在我第一次去,大多数类的功能(除了特殊功能)是不可见的,无法访问
我试着从cdef,cpdef和def的名称反弹的方法和类声明,并尝试使用Google搜索来查看我是否具有正确的语法以及查看是否有其他人有类似问题
这里是我的代码:
class list_2:
cpdef append(self , object item):
self._lst = array(self + [item])
cpdef pop(self,int index = -1):
temp_lst = array(range(len(self) -1))
if index > len(self)-1 and index >= 0 or index*(-1) > len(len) and index < 0:
raise IndexError
else:
if index <0:
index = index*(-1)-1
for x in range(len(self)):
if x!= index:
temp_lst[i] = self[x]
i+=1
self._lst = temp_lst
它看起来像你宣布你的班级为'class list_2'。你应该声明它是一个'cdef class list_2',而不是为了使它成为一个cython扩展类型。否则,cython将它视为一个普通的python类。文档中的[此链接](http://cython.readthedocs.io/en/latest/src/tutorial/cdef_classes.html)可能有助于学习有关cython类的知识。 – CodeSurgeon
另外,我不确定尝试重新实现列表类是否会带给您期望的性能优势。如果你的数据都是单一类型的,你可能还想考虑使用cython的类型化内存视图或者使用C数组和指针。了解为什么你有兴趣创建一个修改过的列表类可能会有所帮助。 – CodeSurgeon
@CodeSurgeon,我想我已经提到过了,我已经为类声明尝试了'cdef','cpdef'和'def',并且它们都给了我相同的结果,没有包含在类中的那些函数 老实说,我只是想让这个课程在Cython和Python中练习 您可能会有其他任何建议,我将非常感谢 –