मौजूदा जवाब आप दिखा कैसे एक वस्तु की विशेषताओं पाने के लिए की एक अच्छा काम करते हैं, लेकिन ठीक सवाल आप उत्पन्न जवाब नहीं - कैसे प्राप्त करने के लिए विधि एक वस्तु का। पायथन वस्तुओं में एक एकीकृत नेमस्पेस होता है (रूबी से अलग, जहां विधियों और विशेषताओं का नाम अलग-अलग नामस्थानों का उपयोग करता है)। उदाहरण के लिए विचार करें:
>>> class X(object):
... @classmethod
... def clame(cls): pass
... @staticmethod
... def stame(): pass
... def meth(self): pass
... def __init__(self):
... self.lam = lambda: None
... self.val = 23
...
>>> x = X()
>>> dir(x)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__',
'__getattribute__', '__hash__', '__init__', '__module__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__', '__weakref__',
'clame', 'lam', 'meth', 'stame', 'val']
((आउटपुट पढ़ने योग्यता के लिए विभाजित))।
जैसा कि आप देख, यह आप सभी विशेषताओं के नाम दे रहा है - विशेष तरीकों कि सिर्फ object
से लिए गए हैं के बहुत सारे सहित, विशेष डेटा जैसे __class__
, __dict__
और __doc__
, प्रति-उदाहरण डेटा विशेषताओं विशेषताओं (val
) , प्रति-उदाहरण निष्पादन योग्य गुण (lam
), साथ ही वास्तविक विधियां।
हैं और जब आप अधिक चयनात्मक होने की जरूरत है, की कोशिश:
>>> import inspect
>>> [n for n, v in inspect.getmembers(x, inspect.ismethod)]
['__init__', 'clame', 'meth']
स्टैंडर्ड पुस्तकालय मॉड्यूल inspect
अजगर में आत्मनिरीक्षण करने का सबसे अच्छा तरीका है: यह की चोटी पर बनाता में निर्मित आत्मनिरीक्षण हुक (जैसे dir
और अधिक उन्नत वाले) आपको उपयोगी, समृद्ध और सरल आत्मनिरीक्षण सेवाएं प्रदान करने के लिए। यहां, उदाहरण के लिए, आप देखते हैं कि इस वर्ग द्वारा विशेष रूप से डिज़ाइन किए गए केवल इंस्टेंस और क्लास विधियां दिखायी जाती हैं - स्थैतिक विधियां नहीं, उदाहरण के गुण नहीं, चाहे कॉल करने योग्य हों या नहीं, object
से विशेष विधियों को विरासत में नहीं मिला है। यदि आपकी चुनिंदाता की ज़रूरतें थोड़ी अलग हैं, तो ismethod
के अपने स्वयं के tweaked संस्करण को बनाना आसान है और परिणामों को अपनी सटीक, सटीक आवश्यकताओं के अनुरूप बनाने के लिए getmembers
के दूसरे तर्क के रूप में पास करना आसान है।
काम करता है! धन्यवाद – potlee