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

我有一个简单的 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._left与self._right是Node对象类型。我遇到了另一个使用的答案,.class_type.instance_type但该示例仅指包含不同类实例的类属性。就我而言,由于Node尚未定义,我无法声明以下规范:


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

      ("_right", Node.class_type.instance_type),

     ]


@jitclass(spec)

class Node(object):


梦里花落0921
浏览 141回答 1
1回答

隔江千里

基于此示例- numba 具有deferred_type用于这种情况的功能。node_type = numba.deferred_type()spec=[    ("_left", node_type),    ("_right", node_type),]@jitclass(spec)class Node:    # omitted# define the deferred typenode_type.define(Node.class_type.instance_type)# class can be used!a = Node()b = Node()a.left = b
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python