处理此问题的一种方法是lazy initialization。你可以做些像。。在class Mammal(object):
def __init__(self):
self.blood_sample = 42
self.dna_sequence = None
def get_dna_sequence(self):
if self.dna_sequence == None:
self.generate_dna_sequence(self.blood_sample)
return self.dna_sequence
def generate_dna_sequence(self, blood_sample=None):
self.dna_sequence = stuff_to_generate_sequence(blood_sample)
class Human(Mammal):
def __init__(self):
super(Mammal, self).__init__()
self.blood_sample = 43
然后,人类会自动继承“get_dna_序列”,但这两个版本都只会根据要求进行计算。在
您可以通过使get_dna_sequence()方法成为一个generator来进一步拉皮条,如果您正在进行的计算/映射可能会被“分块”,那么您应该在处理它时生成它的块,这样您就不必将整个东西保存在内存中。(对于DNA来说,我认为这是相当大的……)