क्या समान परिणाम प्राप्त करने के लिए एक विधि का उपयोग करना संभव है जैसे लाइन 35? में आउटपुट मैंने विभिन्न तरीकों की कोशिश की है, लेकिन उनमें से कोई भी इसे प्राप्त नहीं कर सकता है।

In [34]: class Foo:
    ...:     def test(self):
    ...:         pass
    ...: 

In [35]: Foo.test
Out[35]: <function __main__.Foo.test(self)>  # how to use a method to get the output in code?

In [36]: Foo.test.__str__
Out[36]: <method-wrapper '__str__' of function object at 0x107cd2b80>

In [37]: str(Foo.test)
Out[37]: '<function Foo.test at 0x107cd2b80>'
1
fitz 8 पद 2020, 12:11

1 उत्तर

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

यहां समस्या यह है कि आप एक बहुत ही चतुर पायथन दुभाषिया का उपयोग कर रहे हैं। यह रेखा:

Out[35]: <function __main__.Foo.test(self)>

बहुत जानकारीपूर्ण है क्योंकि इसमें कक्षा का योग्य नाम शामिल है। दुर्भाग्य से, किसी फ़ंक्शन पर लागू किए गए न तो मानक str और न ही repr इसे प्रदान करते हैं। यह सुनिश्चित करने के लिए सरल idle या python का उपयोग करें। आपको मिलेगा:

>>> Foo.test
<function Foo.test at 0x107cd2b80>

ठीक वही str लौटाता है।

आप निश्चित रूप से इसे inspect मॉड्यूल की मदद से हाथ से वैकल्पिक रूप से बना सकते हैं, लेकिन इसके लिए कुछ काम करना होगा... आपको अपने टूल के दस्तावेज़ को पढ़ना चाहिए (क्या यह ipython?) जो यह प्रदर्शित करता है उसका सटीक विवरण प्राप्त करने के लिए, या निर्दिष्ट (ठीक) कि आप क्या चाहते हैं

1
Serge Ballesta 8 पद 2020, 09:47