Cython 模块 属性

Cython module property

在 Cython 中,您可以为 class 属性定义 getter 和 setter 函数:

cdef class module
  property a:
    def __get__(self):
      cdef int a
      get_a(&a)
      return a
    def __set__(self, int a):
      set_a(&a)

有没有办法在模块级别定义 getters 和 setters?例如,语法可能如下所示。

@module_property
def a():
  pass
  
@a.setter
def a(int new_a):
  set_a(&new_a)
  
@a.getter
def a():
  cdef int a_copy
  get_a(&a_copy)
  return a_copy

正如@Brian 指出的那样,class 的全局实例效果很好。所以它可能看起来像:

cdef class module: 
  property a:
    def __get__(self):
      cdef int a_copy
      get_a(&a_copy)
      return a
    def __set__(self, int new_a):
      set_a(&new_a)
      
module_instance = module()