दिलचस्प पोस्ट
प्रारूप फ़्लोट से n दशमलव स्थानों पर PHP में अपलोड किए गए फ़ाइल प्रकार की जांच कैसे करें अंगुलेज कोड / नामकरण सम्मेलनों 1 डी सरणी से कुशल नीलम 2 डी सरणी निर्माण IOS पर सभी संपर्कों की एक सूची प्राप्त करें अनिर्धारित स्थानीय चर सबसे तेजी से यादृच्छिक संख्या जनरेटर है? java.lang.IllegalStateException: एफएक्स आवेदन थ्रेड पर नहीं; currentThread = थ्रेड -4 दृश्य मॉडल (सी #) से WPF में पाठ बॉक्स पर फ़ोकस सेट करें प्रकार सुरक्षा: अनचेक किए गए कलाकार ऐप अस्वीकार किया गया, लेकिन मैं यूडीआईडी ​​का उपयोग नहीं करता NSString को NSDate कैसे div में बिल्कुल स्थिति तत्व केंद्रित करने के लिए? ऐप कॉन्फ़िग में कस्टम प्रदाता के अंदर $ http का उपयोग करें, angular.js Z- अनुक्रमणिका क्यों काम नहीं करता है? टीसीपी क्लाइंट डिस्कनेक्ट करना

ऑब्जेक्ट के तरीकों और विशेषताओं की पूरी सूची कैसे प्राप्त करें?

dir(re.compile(pattern)) 

सूचियों के तत्वों में से एक के रूप में पैटर्न वापस नहीं करता है अर्थात् यह देता है:

 ['__copy__', '__deepcopy__', 'findall', 'finditer', 'match', 'scanner', 'search', 'split', 'sub', 'subn'] 

मैनुअल के अनुसार, इसमें शामिल होना चाहिए

ऑब्जेक्ट के गुणों के नाम, उसके वर्ग के गुणों के नाम, और इसके कक्षा के आधार वर्गों के गुणों की पुनरावर्ती रूप से।

यह भी कहते हैं कि

यह सूची जरुरी नहीं है

क्या पूरी सूची प्राप्त करने का कोई तरीका है? मुझे हमेशा यह माना जाता है कि डियर पूरी सूची लौटता है लेकिन जाहिरा तौर पर यह नहीं …

इसके अलावा: क्या केवल गुणों को सूचीबद्ध करने का एक तरीका है? या केवल तरीकों?

संपादित करें: यह वास्तव में अजगर में एक बग है -> माना जाता है कि यह 3.0 शाखा (और शायद 2.6 में भी तय है)

वेब के समाधान से एकत्रित समाधान "ऑब्जेक्ट के तरीकों और विशेषताओं की पूरी सूची कैसे प्राप्त करें?"

विशेषताओं की पूरी सूची के लिए, संक्षिप्त उत्तर है: नहीं। समस्या ये है कि विशेषताएँ वास्तव में getattr निर्मित समारोह द्वारा स्वीकार किए गए तर्क के रूप में परिभाषित किए गए हैं। जैसे कि उपयोगकर्ता __getattr__ को फिर से क्रियान्वित कर सकता है, अचानक किसी भी तरह की विशेषता को अनुमति देता है, उस सूची को उत्पन्न करने के लिए कोई संभावित सामान्य तरीका नहीं है। dir फ़ंक्शन __dict__ विशेषता में चाबियाँ वापस देता है, यानी सभी गुणों को एक्सेस किया जा सकता है यदि __getattr__ पद्धति का __getattr__ क्रियान्वयन नहीं किया गया है।

दूसरे प्रश्न के लिए, यह वास्तव में समझ में नहीं आता है दरअसल, तरीके कॉलनीय गुण हैं, और कुछ नहीं। आप फिल्टर योग्य गुण फ़िल्टर कर सकते हैं, और, inspect मॉड्यूल inspect उपयोग वर्ग तरीकों, विधियों या कार्यों को निर्धारित करते हैं।

यही कारण है कि नया __dir__() विधि अजगर 2.6 में जोड़ा गया है

देख:

यहां पियरेबीडीआर और मो के उत्तर में व्यावहारिक अतिरिक्त है:

– पायथन = 2.6 = और नए-शैली के वर्गों के लिए , डीआईआर () पर्याप्त लगता है;
पुरानी-शैली वाले कक्षाओं के लिए , हम कम से कम एक ऐसा मानक मॉड्यूल कर सकते हैं जो टैब पूरा करने में सहायता करता है: dir() अलावा, __class__ को __class__ – और फिर इसके __bases__ लिए __bases__ :

 # code borrowed from the rlcompleter module # tested under Python 2.6 ( sys.version = '2.6.5 (r265:79063, Apr 16 2010, 13:09:56) \n[GCC 4.4.3]' ) # or: from rlcompleter import get_class_members def get_class_members(klass): ret = dir(klass) if hasattr(klass,'__bases__'): for base in klass.__bases__: ret = ret + get_class_members(base) return ret def uniq( seq ): """ the 'set()' way ( use dict when there's no set ) """ return list(set(seq)) def get_object_attrs( obj ): # code borrowed from the rlcompleter module ( see the code for Completer::attr_matches() ) ret = dir( obj ) ## if "__builtins__" in ret: ## ret.remove("__builtins__") if hasattr( obj, '__class__'): ret.append('__class__') ret.extend( get_class_members(obj.__class__) ) ret = uniq( ret ) return ret 

(परीक्षण कोड और आउटपुट को संक्षिप्तता के लिए हटा दिया जाता है, लेकिन मूल रूप से नए-स्टाइल ऑब्जेक्ट के लिए हमें get_object_attrs() लिए get_object_attrs() के समान परिणाम get_object_attrs() , और पुरानी-शैली वाले कक्षाओं के लिए dir() आउटपुट के मुख्य भाग को लगता है __class__ विशेषता होने के लिए))

इस तरह मैंने ऐसा किया, केवल साधारण कस्टम ऑब्जेक्ट्स के लिए उपयोगी होते हैं जिनके लिए आप गुण जोड़ते हैं: obj = type("CustomObj",(object,),{}) , या बस के साथ एक obj ऑब्जेक्ट बनाया गया है:

 class CustomObj(object): pass obj=CustomObject() 

फिर, केवल कस्टम विशेषताओं के साथ एक शब्दकोश प्राप्त करने के लिए, मुझे क्या करना है:

 {key: value for key, value in self.__dict__.items() if not key.startswith("__")}