属性类和属性装饰器

时间:2018-03-07 15:33:53

标签: python cython

我见过用这种方式定义属性的代码

property sockets:
    def __get__(self):
        cdef list sockets = []

与装饰器声明它有什么区别吗?

1 个答案:

答案 0 :(得分:2)

__get__等定义属性函数的方法是遗留语法,并且不赞成使用@property装饰器 - per docs

  

还有一种特殊的(已弃用的)旧语法,用于定义扩展类中的属性:

cdef class Spam:

    property cheese:

Cython生成的代码在功能上是等效的,可以通过检查C文件看到,但语法是遗留的,不推荐使用,可能会在将来的Cython版本中删除。