Messenger/Data Transfer ObjectΒΆ
The Messenger or Data Transfer Object is a way to pass a clump of
information around. The most typical place for this is in return values from
functions, where tuples or dictionaries are often used. However, those rely on
indexing; in the case of tuples this requires the consumer to keep track of
numerical order, and in the case of a dict you must use the d["name"]
syntax which can be slightly less desireable.
A Messenger is simply an object with attributes corresponding to the names of the data you want to pass around or return:
# Messenger/MessengerIdiom.py
class Messenger:
def __init__(self, **kwargs):
self.__dict__ = kwargs
m = Messenger(info="some information", b=['a', 'list'])
m.more = 11
print m.info, m.b, m.more
The trick here is that the __dict__
for the object is just assigned to the
dict that is automatically created by the **kwargs
argument.
Although one could easily create a Messenger
class and put it into a library
and import it, there are so few lines to describe it that it usually makes more
sense to just define it in-place whenever you need it – it is probably easier
for the reader to follow, as well.