0
是否存在從父類檢查子類中方法的輸出的pythonic方法。例如,如果你有這個結構,我想在子類中的方法'generate'的輸出中執行一個檢查(在父類中)(例如,如果它有正確的形狀)。如何檢查子類中的方法的輸出是否具有正確的大小
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])
下達到正確的效果,但需要調用子類的初始化方法方法check_class。有沒有辦法實現這種檢查,而不必記得在每個子類中調用「check_class」方法?
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])
如果你調用生成,這現在將檢查輸出的大小是正確的,因爲需要:
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
有什麼意圖,在什麼時候進行驗證檢查? –
這個檢查可以在子類被實例化的時候完成(例如在上面的工作中)或者當方法被調用時 - 也可以! – fjhj2
你能用父類方法來裝飾子類嗎? –