gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:21:54 28 4
gpt4 key购买 nike

我有一个简单的 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com