FOIL Python's strong typing!

54 52 50 49 48 45 39 bytes

Removed 4 bytes thanks to Dennis.

The latest version is inspired by the "some reason" in xnor's answer.

class t(int):__add__=type
a=b=t()
c=d=0

54 bytes

class m(int):__call__=__add__=lambda*x:m()
a=b=c=d=m()

Make an object that inherits from int, except adding or calling just returns a copy of itself.

Same length:

class m(int):__call__=__add__=lambda a,b:a
a=b=c=d=m()

I thought min or {}.get would work in place of lambda a,b:a, but for some reason they act only on the second argument.


81 66 bytes

class e:__mul__=lambda*o:0;__add__=lambda*o:lambda x:0
a=b=c=d=e()