Thanks, Nathin! So, if I understand correctly, the only advantage to "group.begin()" over "with group" is that group.begin() will work with classes that don't have __enter__ and __exit__. How often does that actually happen? I prefer the *with *because it's shorter and easier to visually parse, but I want to play it safe.
Den On Wed, Nov 18, 2015 at 12:29 AM, Igor Majdandzic < subscripti...@badgerfx.com> wrote: > Thanks Nathan, > very interesting insight. > > > Am 17.11.2015 um 19:32 schrieb Nathan Rusch: > > These two snippets are pretty much functionally identical: > > with group: > # Do something... > > # ------ > > group.begin() > try: > # Do something... > finally: > group.end() > > > The `with`statement works with objects that implement Python's context > manager protocol ( > https://docs.python.org/2/reference/datamodel.html#with-statement-context-managers > ). > > Basically, if a class implements __enter__ and __exit__ methods, it can be > used as the context manager in a `with` statement. When the block inside > the `with` statement begins, the context manager's .__enter__() method is > called, and when the block exits, the context manager's .__exit__() method > is called unconditionally (even if an exception occurs in the block). > > When using a Group node as a context manager, its .begin() method will be > called by .__enter__(), and .end() will be called by .__exit__(). Thus, > this is redundant: > > with group: > group.begin() > # Do something... > group.end() > > It's worth noting that Nuke currently always returns the current context > to the root node when a group context is exited, rather than to whatever > context it was in before the context was changed to the group, though this > is logged as a bug. > > Hope that helps. > > -Nathan > > > *From:* Justin GD <j.grosde...@gmail.com> > *Sent:* Tuesday, November 17, 2015 9:58 AM > *To:* Nuke Python discussion <nuke-python@support.thefoundry.co.uk> > *Subject:* Re: [Nuke-python] nuke.zoom and in group button > > Hi all, > > That's a good question; > I've been using the *with *statement as well with success. > > I'm curious of what is the best method. > > Cheers, > Justin > > 2015-11-17 17:24 GMT+00:00 Den Serras <denserras...@gmail.com>: > This leads to a slightly tangential discussion... I used to always use: > > with group: > (inner node stuff) > > which generally seemed to work; but so many people use begin() that now I > play it safe and do: > > with group: > group.begin() > (inner node stuff) > group.end() > > But perhaps someone can explain what the theoretical and functional > differences are between "with group" and "group.begin()", and whether by > combining them I'm causing even more problems... > > Thanks! > Den > > On Tue, Nov 17, 2015 at 1:29 AM, Johan Forsgren < <j.a.forsg...@gmail.com> > j.a.forsg...@gmail.com> wrote: > Root().begin() worked wonderfully, I had actually no idea that it existed > at all, thanks! > > > 2015-11-16 18:05 GMT+01:00 Mike Frank < <michaeljfr...@gmail.com> > michaeljfr...@gmail.com>: > nuke.Root().begin() > > > > _______________________________________________ > Nuke-python mailing list > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > _______________________________________________ > Nuke-python mailing list > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > ------------------------------ > _______________________________________________ > Nuke-python mailing list > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > _______________________________________________ > Nuke-python mailing listnuke-pyt...@support.thefoundry.co.uk, > http://forums.thefoundry.co.uk/http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > > > > _______________________________________________ > Nuke-python mailing list > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > >
_______________________________________________ Nuke-python mailing list Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python