Python 3.x 如果条件为“详细”;如果不是hasattr(self,';uu total';):";
我遵循“流畅的Python”学习函数和设计模式: 第六章 在这里设置if条件的目的是什么?我想如果:Python 3.x 如果条件为“详细”;如果不是hasattr(self,';uu total';):";,python-3.x,Python 3.x,我遵循“流畅的Python”学习函数和设计模式: 第六章 在这里设置if条件的目的是什么?我想如果: def total(self): return sum(item.total() for item in self.cart) 我错过的关键点是什么?您能提供一些提示吗?如果您多次调用total会发生什么?如果self.cart没有改变,那么您就不需要重新计算总数,这可能是一项昂贵的操作 您正在检查是否已存储该值。如果没有,则计算它,如果有,则只返回存储的值而不重新计算
def total(self):
return sum(item.total() for item in self.cart)
我错过的关键点是什么?您能提供一些提示吗?如果您多次调用
total
会发生什么?如果self.cart
没有改变,那么您就不需要重新计算总数,这可能是一项昂贵的操作
您正在检查是否已存储该值。如果没有,则计算它,如果有,则只返回存储的值而不重新计算
顺便说一句,我希望在这里你的生活会很困难,因为\uu total
开头有双下划线。您可能想考虑切换到一个下划线。
def total(self):
if not hasattr(self, '__total'):
self.__total = sum(item.total() for item in self.cart)
return self.__total
def total(self):
return sum(item.total() for item in self.cart)