On 27 March 2018 at 16:51, Joao S. O. Bueno <jsbu...@python.org.br> wrote: > Well, there is an idiom to "keep everything as is", and work around > the current limitations: > > class A: > def b(): > x = 1 > d = [i + x for i in range(2)] > return locals() > locals().update(b()) > del b > > Maybe if we could find a syntactic sugar for this idiom > (with an abuse of the `with` keyword, for example), people could be happy, > with class bodies working by default as they are now, and enabling the > reuse of defined members by using the special syntax - > > class A: > with class: > x = 1 > d = [i + x for in range(2)]
I'd actually like to see some real world use cases to get a feel for whether this is even worth worrying about. (I'm not saying it isn't, just that it's hard to get a feel for the importance based on artificial examples). BTW, for an alternative workaround that avoids nested scopes altogether: >>> import operator >>> from functools import partial >>> class C: ... x = 1 ... d = list(map(partial(operator.add, x), range(2))) ... >>> c = C() >>> c.d [1, 2] No, I'm not suggesting that's clearer - but it does (at least in my mind) make it more obvious that the problem is with comprehensions, not with class scopes. Paul _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/