On 18 June 2016 at 23:47, Ethan Furman <et...@stoneleaf.us> wrote: > On 06/18/2016 07:05 AM, Joonas Liik wrote: >> >> On 18 June 2016 at 15:04, Pete Forman wrote: > > >>> with obj: >>> .a = 1 # equivalent to obj.a = 1 >>> .total = .total + 1 # obj.total = obj.total + 1 >> >> >> the leading dot does not resolve the ambiguity that arises from: >> >> with ob_a: >> with ob_b: >> .attr_c = 42 # which object are we modifying right now? > > > The innermost one. Why would it be anything else? > > -- > ~Ethan~ > > -- > https://mail.python.org/mailman/listinfo/python-list
What if ob_b does not have attribute attr_c but ob_a does? This may be simple for a computer to solve - try looking it up on ob_b and fall back to ob_a if ob_b has no such attr.. but it is hard(er) to reason about for a human. You need to know about the inner structure of ob_b. not an issue for the person who writes it at first (unless 2 months have passed ) but a real pain if you are seeing that bit of code for the first time or are not intimately familiar with what ob_b is. Not unsolvable ofc, but makes it easier for obscure bugs to hide. -- https://mail.python.org/mailman/listinfo/python-list