インタラクティブなpythonセッション)で変数名として使用して誤ってset
を上書きしました-元のset
関数にアクセスする方法はありますかセッションを再開せずに?
(そのセッションにはたくさんのものがあるので、そうする必要はありませんが、もちろん必要に応じてできます。)
組み込みをマスクしている名前を削除するだけです。
>>> set = 'oops'
>>> set
'oops'
>>> del set
>>> set
<type 'set'>
__builtins__
名前空間を介していつでも元のビルトインにアクセスできます。組み込みをオーバーライドしたいが、オーバーライドから元の静止画に延期したい場合は、これを使用します。
>>> __builtins__.set
<type 'set'>
__builtins__
は __builtin__
モジュール (Python 2、s
の欠如に注意)、または builtins
module (Python 3、s
あり、アンダースコアなし)。
マスキング名が定義されている場所を見つけるのに問題がある場合は、現在の名前空間から組み込みの名前空間までのすべての名前空間を確認してください。現在の状況に適用される可能性のあるスコープについては、 スコープルールの簡単な説明? を参照してください。
__builtin__
を使用できます:
>>> import __builtin__
>>> __builtin__.set
<type 'set'>
または単に(インポートは必要ありません):
>>> __builtins__.set
<type 'set'>
>>> import builtins
>>> builtins.set
<class 'set'>
から docs :
CPython実装の詳細:ユーザーは
__builtins__
に触れないでください。厳密には実装の詳細です。builtins
名前空間の値をオーバーライドするユーザーは、__builtin__
( ‘s’なし)モジュールをインポートし、その属性を適切に変更する必要があります。
組み込みラッパーを使用するには、最初にその元のアドレスをX
のような変数に割り当てます。
作業が完了したら、それをNone
に設定し、元のアドレスを組み込み関数に戻します。
例
X= __builtin__.isinstance
__builtin__.isinstance = myininstance
仕事は終わりました
__builtin__.isinstance=None
__builtin__.isinstance=X