python - 当类的属性包含 self 的实例时如何指定 numba jitclass

标签 python class jit numba

我有一个简单的 Python 类:

class Node(object):
    def __init__(self):
        self._left = self
        self._right = self

    @property
    def left(self):
        return self._left

    @left.setter
    def left(self, value):
        self._left = value

    @property
    def right(self):
        return self._right

    @right.setter
    def right(self, value):
        self._right = value

我想 jit 这个类,但不清楚当 self._leftself._right 属于 Node< 时如何定义类型 对象类型。我遇到了这个other使用 .class_type.instance_type 的答案,但该示例仅引用包含不同类实例的类属性。就我而言,由于 Node 尚未定义,因此我无法声明以下规范:

spec=[("_left", Node.class_type.instance_type),
      ("_right", Node.class_type.instance_type),
     ]

@jitclass(spec)
class Node(object):

最佳答案

基于此example - numba 对于这种情况有一个 deferred_type 函数。

node_type = numba.deferred_type()
spec=[
    ("_left", node_type),
    ("_right", node_type),
]

@jitclass(spec)
class Node:
    # omitted

# define the deferred type
node_type.define(Node.class_type.instance_type)

# class can be used!
a = Node()
b = Node()
a.left = b

关于python - 当类的属性包含 self 的实例时如何指定 numba jitclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54171816/

相关文章:

python - 当我运行不带任何选项的 `twistd` 命令时,为什么我的扭曲插件没有出现?

python - 通过命令行使用 Python 进行交互式绘图

java - JIT 编译器和执行

c# -/optimize 标志启用了哪些运行时优化?

python - python copy.deepcopy时的递归错误

python - pymssql不返回结果数据

Java Class.forName 不会编译。获取 "cannot find symbol symbol : method"

输入值后 C++ 哈希表程序挂起

PHP 类 $_SERVER 变量一个属性

perl - 只能 'perl6'解析Perl 6吗?