type(obj)
और obj.__class__
के बीच क्या अंतर है? क्या type(obj) is not obj.__class__
की संभावना है?प्रकार (ओबीजे) और ओबीजे के बीच अंतर .__ वर्ग__
मैं एक ऐसा फ़ंक्शन लिखना चाहता हूं जो आपूर्ति की गई वस्तुओं पर सामान्य रूप से काम करता है, उसी प्रकार के डिफ़ॉल्ट मान का उपयोग दूसरे पैरामीटर के रूप में करता है। कौन सा बदलाव, # 1 या # 2 नीचे सही काम करने जा रहा है?
def f(a, b=None):
if b is None:
b = type(a)(1) # #1
b = a.__class__(1) # #2
सबसे बड़ी विडंबना है Yairchu की टिप्पणी अब एक ही समस्या है क्योंकि उन्होंने स्वरूपण को स्विच किया है ..: पी –
दिखाने के लिए कोई दिक्कत नहीं होगी * कैसे * वे अलग-अलग व्यवहार करते हैं, और शायद * क्यों *। सिर्फ यह कहकर * जब * वे अलग-अलग व्यवहार करते हैं तो आलसी जवाब लगता है, भले ही सही हो। – MestreLion
उल्लेख करने लायक है यह केवल पायथन 2 में मुद्दा है। पायथन 3 में सभी तीन अभिव्यक्तियां सच होंगी। – Bob