I think the reason to modify the class is that monkey patching the object doesn't give special methods that are visible to python:

```
In [14]: class hack(tuple): pass

In [15]: x = hack([1,2,3])

In [16]: x
Out[16]: (1, 2, 3)

In [17]: x.__int__ = lambda self : 100

In [18]: int(x)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-84fe2e711055> in <module>()
----> 1 int(x)

TypeError: int() argument must be a string or a number, not 'hack'

In [20]: hack.__int__ = lambda self : 100

In [21]: int(x)
Out[21]: 100

```