如何向Cython类添加静态成员(来自python,而不是C)

2024-10-04 05:25:03 发布

您现在位置:Python中文网/ 问答频道 /正文

如何向cython类添加静态的、类型化的成员?添加类型化实例成员的语法使用如下语法(例如):

import cython

cdef class NoStaticMembers:

   cdef public int instanceValue # but, how do I create a static member??

   def __init__(self, int value):
       self.instanceValue = value

Tags: 实例importselfvalue静态语法成员public
1条回答
网友
1楼 · 发布于 2024-10-04 05:25:03

仅仅因为你能用C来做并不意味着你能用Cython来做。在

解决方法可能涉及使用全局变量和类属性,以便可以通过类实例访问它们。但我不确定它是否真的比使用全局变量好

import cython

cdef int MyClass_static_variable

cdef class MyClass:
   property static_variable:
      def __get__(self):
         return MyClass_static_variable

      def __set__(self, x):
         global MyClass_static_variable
         MyClass_static_variable = x

你必须测量你通过这种方法损失了多少速度(如果可以的话,可以考虑制作__get__和{}cpdef,我不确定)。真正的静态变量唯一不能做的就是以MyClass.static_variable的形式访问它。在

相关问题 更多 >