Как указать Jumbc класс numba, когда атрибут class содержит экземпляр self

1

У меня есть простой класс 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

Я хотел бы использовать этот класс, но не ясно, как определять типы, когда 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):
Теги:
class
numba
jit

1 ответ

0

Основываясь на этом примере - в 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
  • 0
    Вы случайно не знаете, возможно ли это, если мы можем создать подкласс (или наследовать) от класса Node ? Я получаю сообщение о том, что не могу создать подкласс jitclass

Ещё вопросы

Сообщество Overcoder
Наверх
Меню