die Klasse DOF Betrachten und sein Kind particleGroup:Numba jitclass: Elternklasse-Typ als Klassenmitglied
class dof():
def getVar(self):
return self.var
spec = [
('var', float64[:]),
('C_s', float64[:]),
]
@jitclass(spec)
class particleGroup(dof):
def __init__(self, partRelease):
self.var = np.array([partRelease.Q, partRelease.M[0], partRelease.M[1], partRelease.M[2], partRelease.B, partRelease.x[0], partRelease.x[1], partRelease.x[2], 0])
self.C_s = np.copy(partRelease.C_s)
def getC(self):
return self.C_s
Die Einzelheiten partRelease Objekt sind nicht wichtig.
Die Klasse dof ist eine Python-Klasse, da numba die Vererbung einer JIT-Klasse nicht unterstützt. Daher kann ein deferred_type nicht verwendet werden.
dof kann die Eltern verschiedener Unterklassen sein. Ich möchte die dof Klasse in einer anderen Klasse verwendet werden, wo ich in der Lage wäre, die übergeordnete Funktion getVar() aufrufen.
Meine Frage: Wie eine Instanz dieser Klasse (Dof-Typ oder einer der untergeordneten Typen) in einer anderen Klasse gespeichert? Welchen Typ soll ich in der jitclass-Spezifikation angeben?
Dann: Auch wenn ich den Elternklasse-Typ angeben kann, vermute ich, dass der Aufruf an eine Python-Klasse teuer sein wird. Gibt es einen anderen Weg, Polymorphismus effizient zu machen, z.B. Verwenden von Vorlagen anstelle von Vererbung?