Gibt es eine pythonische Möglichkeit, die Ausgaben einer Methode in einer Kindklasse von der Elternklasse zu überprüfen.Wie die Ausgabe von einer Methode in der Kindklasse überprüft wird, hat die richtige Größe
Zum Beispiel, wenn Sie diese Struktur haben, möchte ich eine Überprüfung (in der Elternklasse) auf die Ausgabe von der Methode 'generieren' in der Kindklasse (z. B. wenn es die richtige Form hat).
class parent_class(object):
def generate(self):
raise NotImplementedError
class child_class(parent_class):
def generate(self, array_size):
return np.random.uniform(size = [10,10])
Nachfolgend erreicht die richtige Wirkung, erfordert aber die Methode check_class im init Methode des Kindes Klasse aufrufen. Gibt es eine Möglichkeit, diese Überprüfung zu erreichen, ohne daran zu denken, den Aufruf der Methode 'check_class' in jeder untergeordneten Klasse durchzuführen?
class parent_class(object):
def generate(self, size):
raise NotImplementedError
def check_class(self):
assert self.generate([5,5]).shape == (5,5), 'Output of generate has the wrong shape'
class child_class(parent_class):
def __init__(self):
self.check_class()
def generate(self, size):
return np.random.uniform(size = [10,10])
Wenn Sie erzeugen aufrufen, wird diese nun die Größe der Ausgabe überprüfen ist richtig, je nach Bedarf:
a = child_class()
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-58-389a5f325aca> in <module>()
----> 1 a = child_class()
<ipython-input-56-99054bf26f0e> in __init__(self)
10
11 def __init__(self):
---> 12 self.check_class()
13
14 def generate(self, size):
<ipython-input-56-99054bf26f0e> in check_class(self)
5
6 def check_class(self):
----> 7 assert self.generate([5,5]).shape == (5,5), 'Output of generate has the wrong shape'
8
9 class child_class(parent_class):
AssertionError: Output of generate has the wrong shape
Was ist die Absicht, wann wird die Validierungsprüfung durchgeführt? –
Die Überprüfung kann durchgeführt werden, wenn die Kindklasse instanziiert wird (wie in der obigen Arbeit) oder wenn die Methode aufgerufen wird - beides wäre in Ordnung! – fjhj2
könnten Sie die Kindklasse mit der Elternklassenmethode dekorieren? –