为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梦里花落0921 2021-10-10 16:18:44
我有一个简单的 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):
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

基于此示例- 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


查看完整回答
反对 回复 2021-10-10
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信