I tried sub-classing the built-in int object along the lines of this example but I got a strange error.
Here is the code and resulting Traceback.
# Built-in namespace
import __builtin__
# Extended subclass
class myint(int):
def in_words(self):
if self:
return 'one million'
else:
return ''
# Substitute the original int with the subclass on the built-in namespace
__builtin__.int = myint
(I was planning to write a method to return an integer as a series of words like on a cheque).
Just executing this definition code causes the following:
Traceback (most recent call last):
File "/Users/billtubbs/anaconda/lib/python2.7/site-packages/ipykernel/ipkernel.py", line 175, in do_execute
shell.run_cell(code, store_history=store_history, silent=silent)
File "/Users/billtubbs/anaconda/lib/python2.7/site-packages/IPython/core/interactiveshell.py", line 2917, in run_cell
self.execution_count += 1
File "/Users/billtubbs/anaconda/lib/python2.7/site-packages/traitlets/traitlets.py", line 450, in __set__
new_value = self._validate(obj, value)
File "/Users/billtubbs/anaconda/lib/python2.7/site-packages/traitlets/traitlets.py", line 471, in _validate
value = self.validate(obj, value)
File "/Users/billtubbs/anaconda/lib/python2.7/site-packages/traitlets/traitlets.py", line 1266, in validate
self.error(obj, value)
File "/Users/billtubbs/anaconda/lib/python2.7/site-packages/traitlets/traitlets.py", line 499, in error
raise TraitError(e)
TraitError: The 'execution_count' trait of a ZMQInteractiveShell instance must be an integer, but a value of 2 <type 'int'> was specified.