2009-06-04 11 views
10

पाइथन के निर्मित क्षेत्र में आप स्पष्ट रूप से नाम का उपयोग कैसे करते हैं?पायथन के दायरे में निर्मित पहुंच

एक स्थिति जहां मैं इसमें भाग गया था, मॉड्यूल में था, जिसे फू कहा जाता है, जो एक खुला कार्य होता है। किसी अन्य मॉड्यूल में foo का ओपन फ़ंक्शन foo.open के रूप में सुलभ होगा जो अच्छी तरह से काम करता है। हालांकि खुद को फू में, खुले खुले खुले ब्लॉक। आप नाम के निर्मित संस्करण को स्पष्ट रूप से खोलने के तरीके तक कैसे पहुंच सकते हैं?

मुझे पता है कि किसी भी निर्मित नाम को अवरुद्ध करने के लिए शायद यह व्यावहारिक रूप से बुरा विचार है, लेकिन मुझे यह जानकर उत्सुकता है कि निर्मित क्षेत्र में स्पष्ट रूप से पहुंचने का कोई तरीका है या नहीं।

+0

+1: यह एक बहुत बुरा विचार builtin नाम ओवरराइड करने के लिए है। –

+0

मैं मानता हूं कि मैं एक ऊंचा विषय खोल रहा हूं, लेकिन सवाल मेरे लिए सही लगता है। मैं समझाता हूं: मैंने 'ओपन' की तरह फ़ाइल तक पहुंच प्राप्त करने के लिए एक फ़ंक्शन लिखा, उसी पैरामीटर को लेना, और उसी ऑब्जेक्ट को वापस करना, लेकिन उन मामलों को संभालना जहां वांछित (फ़ाइल को केवल पढ़ने के लिए) खोला नहीं जा सका। मैं इसे केवल 'आयात my_scripts' जैसी किसी चीज़ से एक्सेस करूंगा; f = my_scripts.open (फ़ाइल नाम, मोड) '। जैसा कि मुझे नाम 'my_scripts.open_' अच्छा दिख रहा है, क्या वह बुरा होगा, क्योंकि दायरा स्पष्ट रूप से दिया गया है? –

उत्तर

12

उपयोग __builtin__ की तरह कुछ है।

def open(): 
    pass 

import __builtin__ 

print open 
print __builtin__.open 

... तुम देता है ...

<function open at 0x011E8670>
<built-in function open>

+0

बोनस पॉइंट अगर कोई मुझे बता सकता है कि यह पहली बार पाइथन में शामिल था। दस्तावेज़ सामान्य रूप से यह कहकर अच्छे होते हैं, लेकिन ऐसा लगता है कि यह मामला नहीं है: http://docs.python.org/library/__builtin__.html – amjoconn

+2

एक लंबा, लंबा समय जब आप इस धागे से डेटिंग देख सकते हैं 1 99 2: http://www.python.org/search/hypermail/python-1992/0049.html (इसे फिर __builtin__ के बजाय बिल्टिन कहा गया था)। पुराने संस्करणों के बारे में चिंता न करें; इसका समर्थन नहीं करते ;-) – ChristopheD

+0

अब, वह पायथन 3 आसपास है, उन्होंने __builtin__ को नियमित बिल्टिन मॉड्यूल में बदल दिया: https://docs.python.org/3/library/builtins.html – Maciek

-2

यह

__builtins__.open() 
+2

__builtins__ CPython का कार्यान्वयन विवरण है। मैं इस पर भरोसा नहीं करता। –

+0

सच है ... मैं मूल रूप से __builtin__ का सुझाव देने जा रहा था लेकिन मैं भूल गया था कि यह एक मॉड्यूल था: -/ –

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