मैं एक फाइल देखना चाहता हूं और कक्षाओं के नाम प्राप्त करना चाहता हूं और जांचना चाहता हूं कि "रनकॉन्फिग" नाम विरासत में मिला है या नहीं। तो अगर किसी फ़ाइल में है

class some_function(RunConfig):

मैं सच लौटना चाहता हूं। मेरा कोड अभी इस तरह दिखता है:

for file in list_of_files:
   if file in ['some_file.py']:
       for name,obj in inspect.getmembers(file):
          if inspect.isclass(obj):
             print("NAME",name,"obj",obj)

यह ऑब्जेक्ट देता है लेकिन मुझे ऐसा कुछ भी नहीं दिख रहा है जो 'रनकॉन्फिग' कहता है। मुझे यहां क्या समझ नहीं आ रहा है? अग्रिम में बहुत बहुत धन्यवाद!

1
hope288 21 जून 2019, 19:17

1 उत्तर

सबसे बढ़िया उत्तर

आप कुछ ऐसा कर सकते हैं:

import importlib
import inspect

def is_class_inherited_in_file(file_name, class_ref):
    module = importlib.import_module(file_name.split('.')[0])
    module_members = inspect.getmembers(module)
    for member in module_members:
        if type(member[1]) == type and issubclass(member[1], class_ref):
            return True
    return False

>>> is_class_inherited_in_file('some_file.py', RunConfig)
True

मान्यता: फ़ाइल नाम कार्यशील निर्देशिका में है। यदि आप किसी निर्देशिका से आयात करना चाहते हैं, तो कुछ ऐसा करें: पूर्ण पथ दिए गए मॉड्यूल को कैसे आयात करें?

1
Amit Kumar 21 जून 2019, 19:46