How to restore a builtin that I overwrote by accident?
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.