How to restore a builtin that I overwrote by accident?
I accidentally overwrote set
by using it as a variable name in an interactive python session - is there any way that I can get access to the original set
function without just restarting my session?
(I have so much stuff in that session that I'd rather not have to do that, although of course I can if necessary.)
Just delete the name that is masking the builtin:
>>> set = 'oops'
>>> set
'oops'
>>> del set
>>> set
<type 'set'>
You can always still access the original built-in through the builtins
module (__builtin__
on Python 2, with underscores and no s
); use this if you want to override the built-in but want to defer to the original still from the override:
>>> import builtins
>>> builtins.set
<type 'set'>
If you have trouble locating where the masking name is defined, do check all namespaces from your current one up to the built-ins; see Short description of the scoping rules? for what scopes may apply to your current situation.
You can use __builtin__
:
>>> import __builtin__
>>> __builtin__.set
<type 'set'>
or simply(no imports required):
>>> __builtins__.set
<type 'set'>
For Python 3:
>>> import builtins
>>> builtins.set
<class 'set'>
From docs:
CPython implementation detail: Users should not touch
__builtins__
; it is strictly an implementation detail. Users wanting to override values in thebuiltins
namespace should import the__builtin__
(no ‘s’) module and modify its attributes appropriately.