Необходимо ли здесь использовать оператор «если»? - PullRequest
2 голосов
/ 18 марта 2020

Пример 6-3 из Свободно Python определяет закрытую переменную self.__total и использует оператор if до ее назначения, как показано ниже:

if not hasattr(self, '__total'):            
    self.__total = sum(item.total() for item in self.cart)        
return self.__total

Почему не просто использовать оператор return self.__total = sum(item.total() for item in self.cart), чтобы сделать назначение?

1 Ответ

3 голосов
/ 18 марта 2020

Существует разница:

return self.__total = sum(item.total() for item in self.cart)

будет перезаписывать любое предыдущее значение закрытой переменной total , тогда как

if not hasattr(self, '__total'):            
    self.__total = sum(item.total() for item in self.cart)        
return self.__total

вернет предыдущее значение, если оно было присвоено ранее ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...