2013-06-17 7 views
17

मैं गलती से set को इंटरैक्टिव पायथन सत्र में एक चर नाम के रूप में उपयोग करके ओवरराइट करता हूं - क्या कोई तरीका है कि मैं अपने सत्र को पुनरारंभ किए बिना मूल set फ़ंक्शन तक पहुंच प्राप्त कर सकता हूं?एक बिल्टिन को पुनर्स्थापित कैसे करें जिसे मैंने दुर्घटना से ओवरराइट किया है?

(मैं, उस सत्र कि मैं नहीं बल्कि ऐसा करने की जरूरत नहीं होगी में इतना सामान है, हालांकि निश्चित रूप से मैं यह कर सकते हैं यदि आवश्यक हो तो।)

उत्तर

28

बस नाम है कि builtin मास्किंग है हटा दें:

>>> set = 'oops' 
>>> set 
'oops' 
>>> del set 
>>> set 
<type 'set'> 

तुम हमेशा अभी भी मूल __builtins__ नाम स्थान के माध्यम से builtin देख सकते हैं; इस का उपयोग करता है, तो आप में निर्मित लेकिन ओवरराइड से अभी भी मूल के लिए स्थगित करना चाहते हैं ओवरराइड करना चाहते: (, अजगर 2 s की कमी ध्यान दें)

__builtins____builtin__ module से ली जाती है, या builtins module (पायथन 3, s के साथ लेकिन कोई अंडरस्कोर नहीं)।

यदि आपको पता लगाने में परेशानी है कि मास्किंग नाम परिभाषित किया गया है, तो अपने वर्तमान एक से अंतर्निर्मित सभी नामस्थानों को जांचें; Short Description of the Scoping Rules? देखें कि आपकी वर्तमान स्थिति में कौन-से स्कोप लागू हो सकते हैं।

+1

यह एक शानदार रूप से सरल चाल है, धन्यवाद! – weronika

+0

बहुत बढ़िया, पाइथन कमांड लाइन का उपयोग करते समय बहुत उपयोगी :) – razzak

+0

पायथन 3 में मेरे लिए काम नहीं करता है। मुझे त्रुटि मिलती है कि जब मैं इसे हटाता हूं तो 'ओपन' परिभाषित नहीं किया जा रहा है। –

6

आप __builtin__ उपयोग कर सकते हैं:

>>> import __builtin__ 
>>> __builtin__.set 
<type 'set'> 

या बस (कोई आयात आवश्यक):

For Python 3:

>>> import builtins 
>>> builtins.set 
<class 'set'> 

docs से:

CPython कार्यान्वयन विस्तार: उपयोगकर्ताओं को __builtins__ नहीं छूना चाहिए; यह सख्ती से एक कार्यान्वयन विस्तार है। builtins नामस्थान में मानों को ओवरराइड करना चाहते हैं, __builtin__ (नहीं ') मॉड्यूल आयात करना चाहिए और इसके गुणों को उचित रूप से संशोधित करना चाहिए।

+0

ठीक है और यदि मैं 'buildins.open' विधि बदल गया था तो मैं क्या करूँ? –

+0

@ TomášZato तब तक मुझे यह पता लगाना संभव नहीं है जितना मुझे पता है। यदि आपके आवेदन को ऐसा कुछ करने की आवश्यकता है तो आपको इस तरह के चर के लिए एक संदर्भ रखना चाहिए। –

संबंधित मुद्दे

 संबंधित मुद्दे