मैं इस दायरे व्यवहार के बारे में संदेह में हूँ:अजीब अजगर समारोह गुंजाइश व्यवहार
class Bar:
def __init__(self):
for fn in ["open","openW","remove","mkdir","exists","isdir","listdir"]:
print "register", fn
def func_wrapper(filename):
print "called func wrapper", fn, filename
setattr(self, fn, func_wrapper)
bar = Bar()
bar.open("a")
bar.remove("b")
bar.listdir("c")
यह आउटपुट देता है:
register open
register openW
register remove
register mkdir
register exists
register isdir
register listdir
called func wrapper listdir a
called func wrapper listdir b
called func wrapper listdir c
लेकिन मैं उम्मीद है कि func_wrapper
हमेशा सही समारोह होगी। मुझे पता है कि func_wrapper
का दायरा पूरे कार्य के लिए है, लेकिन मैं इसे प्रत्येक लूप पुनरावृत्ति में फिर से परिभाषित करता हूं और आखिरी उदाहरण अट्रिब में सहेजा जाता है। मैंने setattr
के नीचे func_wrapper = None
जोड़ने की भी कोशिश की लेकिन इससे मदद नहीं मिलती (मुझे आश्चर्य भी होगा ...)।
क्या मैं अंधा हूं? मैं वास्तव में यह भी नहीं देखता कि इसे कैसे काम/ठीक करना है।
@heltonbiker: क्या आप विस्तारित कर सकते हैं? मैं इसके बजाय यहां एक निर्देश का उपयोग कैसे करना चाहिए? और क्यों? – Albert
मैंने और अधिक अच्छी तरह से पढ़ा है, और पिछली टिप्पणी हटा दी है। – heltonbiker