def __add__(self, other):
return self.copy().__iadd__(other)<EOL>
Method for addition '+'.

:type other: `Party` or `Family`
:param other: Another party to merge with the current family.
:return: Works in place on self.

.. note:: Works in place on party, will alter this original party.

.. rubric:: Example

Addition of two parties together:

>>> party_a = Party(families=[Family(template=Template(name='a'),
...                                  detections=[])])
>>> party_b = Party(families=[Family(template=Template(name='b'),
...                                  detections=[])])
>>> party_c = party_a + party_b
>>> print(party_c)
Party of 2 Families.


Addition of a family to a party:

>>> party_a = Party(families=[Family(template=Template(name='a'),
...                                  detections=[])])
>>> family_b = Family(template=Template(name='b'), detections=[])
>>> party_c = party_a + family_b
>>> print(party_c)
Party of 2 Families.


Addition of a party with some families using the same templates:

>>> party_a = Party(families=[Family(template=Template(name='a'),
...                                  detections=[])])
>>> party_b = Party(families=[Family(template=Template(name='a'),
...                                  detections=[])])
>>> party_c = party_a + party_b
>>> print(party_c)
Party of 1 Families.


Addition of non Family or Party objects is not allows:

>>> party_a = Party(families=[Family(template=Template(name='a'))])
>>> misc = 1.0
>>> party_c = party_a + misc # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
NotImplementedError: Ambiguous add, only allowed Party or Family \
additions