
On Thu, Jul 26, 2018 at 12:00 AM Nicholas Chammas < nicholas.chammas@gmail.com> wrote:
Forgive me for being slow. I'm missing what's different in semantics between the translation above and Chris's translation below:
You are VERY close now. You have more SPAM, so yours is better: In [1]: class Spam: ...: @property ...: def eggs(self): ...: print("SPAM SPAM SPAM") ...: return "eggs" ...: In [2]: spam = Spam() In [3]: _tmp = spam In [4]: if _tmp is not None: ...: _tmp = _tmp.eggs ...: if _tmp is not None: ...: _tmp = _tmp.bacon ...: food = _tmp ...: del _tmp ...: food ...: SPAM SPAM SPAM --------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-4-9a2f963239f8> in <module>() 2 _tmp = _tmp.eggs 3 if _tmp is not None: ----> 4 _tmp = _tmp.bacon 5 food = _tmp 6 del _tmp AttributeError: 'str' object has no attribute 'bacon' In [5]: if spam is not None and spam.eggs is not None: ...: food = spam.eggs.bacon ...: SPAM SPAM SPAM SPAM SPAM SPAM --------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-5-a24834cdb92b> in <module>() 1 if spam is not None and spam.eggs is not None: ----> 2 food = spam.eggs.bacon 3 AttributeError: 'str' object has no attribute 'bacon' -- Keeping medicines from the bloodstreams of the sick; food from the bellies of the hungry; books from the hands of the uneducated; technology from the underdeveloped; and putting advocates of freedom in prisons. Intellectual property is to the 21st century what the slave trade was to the 16th.