the awesome thing about the __add__ method is that we can add it to any class we writeand if we use the operator on instances of that classit will be called this is how stringtupleand list concatenation worksfor example this is true of all the special methods if we want to use in myobj syntax for custom-defined objectwe can implement __contains__ if we want to use myobj[ivalue syntaxwe supply __setitem__ method and if we want to use something myobj[ ]we implement __getitem__ there are of these special methods on the list class we can use the dir function to see all of themdir(list['__add__''__class__''__contains__''__delattr__','__delitem__''__doc__''__eq__''__format__''__ge__''__getattribute__''__ getitem__''__gt__''__hash__''__iadd__''__imul__''__init__''__iter__''__le__''__len__''__lt__''__mul__''__ne__''__ new__''__reduce__''__reduce_ex__''__repr__''__reversed__''__rmul__''__setattr__''__setitem__''__sizeof__''__str__''__ subclasshook__''append''count''extend''index''insert''pop''remove''reverse''sortfurtherif we desire additional information on how any of these methods workswe can use the help functionhelp(list __add__help on wrapper_descriptor__add__(selfvalue/return self+value the plus operator on lists concatenates two lists we don' have room to discuss all of the available special functions in this bookbut you are now able to explore all this functionality with dir and help the official online python reference (docs python org/ /has plenty of useful information as well focusespeciallyon the abstract base classes discussed in the collections module soto get back to the earlier point about when we would want to use composition versus inheritanceif we need to somehow change any of the methods on the class-including the special methods--we definitely need to use inheritance if we used compositionwe could write methods that do the validation or alterations and ask the caller to use those methodsbut there is nothing stopping them from accessing the property directly they could insert an item into our list that does not have five charactersand that might confuse other methods in the list