Skip to content

Instantly share code, notes, and snippets.

@odra
Created September 17, 2015 15:30
Show Gist options
  • Save odra/d3548350e2c4e0b01ce0 to your computer and use it in GitHub Desktop.
Save odra/d3548350e2c4e0b01ce0 to your computer and use it in GitHub Desktop.
simple python context manager
# -*- coding: utf-8 -*-
class Greetings(object):
def __init__(self):
self.text = 'hello world'
def say(self):
print 'My engine is: %s' % self.text
class switch_text(object):
def __init__(self, instance, new_text):
self.instance = instance
self.original_text = self.instance.text
self.new_text = new_text
def __enter__(self):
self.instance.text = self.new_text
return self.instance
def __exit__(self, t, value, traceback):
self.instance.text = self.original_text
if __name__ == '__main__':
greetings = Greetings()
greetings.say()
with switch_text(greetings, 'Hello there') as greeting:
greeting.say()
greetings.say()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment