Those methods are pretty much all you need for making the object work with with
statement.
In __enter__
you have to return the file object after opening it and setting it up.
In __exit__
you have to close the file object. The code for writing to it will be in the with
statement body.
class Meter():
def __init__(self, dev):
self.dev = dev
def __enter__(self):
#ttysetattr etc goes here before opening and returning the file object
self.fd = open(self.dev, MODE)
return self
def __exit__(self, type, value, traceback):
#Exception handling here
close(self.fd)
meter = Meter('dev/tty0')
with meter as m:
#here you work with the file object.
m.fd.read()