In the interest of reusing some existing code that was defined as an instance method of a different class, I was tying to do something like the following:
cl
It happens because python wraps class functions as an "unbound method" which performs this type checking. There's some description of the decisions involved in this here.
Note that this type checking has actually been dropped in python 3 (see the note at the end of that article), so your approach will work there.