How do I get the concrete name (e.g. "<module_name>"."<class_name">) of a class reference in Python? -


यह है जो मैंने अभी तक किया है:

  def get_concrete_name_of_class (klass): " "क्लास को क्लास का कंक्रीट नाम लौटा दिया गया है। क्लास - उस श्रेणी का संदर्भ जिसे हम चाहते हैं" # # # # # # # # # # # # # # # # # msgstr "मैं कैसे जांच करूं कि क्लास वास्तव में एक वर्ग है? # और भी बेहतर यह निर्धारित किया जाएगा कि क्या पुरानी शैली बनाम नई शैली # एक ही समय में और चीज़ें अलग तरीके से नीचे संभालती हैं # एक नए स्टाइल वर्ग का श्रेय "& lt; class 'django.forms.CharField' & gt;" # तो हम एकल उद्धरणों की खोज करते हैं, और इसके अंदर सब कुछ ले लो, हमें "django.forms.CharField" matches = re.search (r "'(। +)'", Str (klass)) देते हैं यदि मैच: वापसी Matches.group (1) # पुरानी शैली की कक्षाएं 'str कंक्रीट वर्ग का नाम है। वापसी str (क्लास)  

तो यह सिर्फ ठीक काम करता है, लेकिन ऐसा लगता है कि क्लास की स्ट्रिंग पर रीगेक्स सर्च करने के लिए इसे बहुत हंसी है। ध्यान दें कि मैं बस klass () .__ class __.__ नाम __ (आर्ग्स, आदि से निपटारा नहीं कर सकता) नहीं कर सकता।

इसके अलावा, क्या कोई भी टोडो को कैसे पूरा करता है (

किसी भी सुझाव की सराहना की जाएगी।

यहां पर टिप्पणी के आधार पर मैं क्या कर रहा हूँ के साथ समाप्त हुआ:

  def get_concrete_name_of_class (klass): "" एक कक्षा को क्लास का कंक्रीट नाम लौटा दिया जाता है। क्लास - उस श्रेणी का संदर्भ जिसे हम रुचि रखते हैं। TypeError` यदि क्लास क्लास नहीं है। "" "यदि नहीं है (क्लास, टाइप करें, क्लासटाइप): TypeError बढ़ाएं ('क्लास तर्क क्लास होना चाहिए। प्रकार% s;% s'% (टाइप करें ), क्लेस)) रिटर्न '% s।% S'% (klass .__ मॉड्यूल__, क्लेस .__ नाम__)  

कैसे बस के बारे में क्लास .__ नाम __ का उपयोग कर, या पूरी तरह से योग्य नाम प्राप्त करने के लिए, klass .__ मॉड्यूल __ + '।' + Klass .__ नाम __ ?


Comments