जब कन्स्ट्रक्टर, और असाइनमेंट और विधि कॉल की बात आती है, तो PyCharm IDE मेरे स्रोत कोड का विश्लेषण करने और प्रत्येक चर के प्रकार का पता लगाने के लिए बहुत अच्छा है। मुझे यह पसंद है जब यह सही है, क्योंकि यह मुझे अच्छा कोड-पूर्णता और पैरामीटर जानकारी देता है, और यह मुझे चेतावनी देता है अगर मैं उस विशेषता को एक्सेस करने का प्रयास करता हूं जो अस्तित्व में नहीं है।मैं PyCharm कैसे बता सकता हूं कि पैरामीटर किस प्रकार की अपेक्षा की जाती है?
लेकिन जब यह पैरामीटर की बात आती है, तो यह कुछ भी नहीं जानता है। कोड-समापन ड्रॉपडाउन कुछ भी नहीं दिखा सकते हैं, क्योंकि वे नहीं जानते कि पैरामीटर किस प्रकार का होगा। कोड विश्लेषण चेतावनियों की तलाश नहीं कर सकता है।
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
peasant = Person("Dennis", 37)
# PyCharm knows that the "peasant" variable is of type Person
peasant.dig_filth() # shows warning -- Person doesn't have a dig_filth method
class King:
def repress(self, peasant):
# PyCharm has no idea what type the "peasant" parameter should be
peasant.knock_over() # no warning even though knock_over doesn't exist
King().repress(peasant)
# Even if I call the method once with a Person instance, PyCharm doesn't
# consider that to mean that the "peasant" parameter should always be a Person
यह निश्चित मात्रा में समझ में आता है। अन्य कॉल साइटें उस पैरामीटर के लिए कुछ भी पास कर सकती हैं। लेकिन अगर मेरी विधि किसी पैरामीटर के प्रकार की अपेक्षा करती है, तो कहें, pygame.Surface
, मैं किसी भी तरह से PyCharm को इंगित करने में सक्षम होना चाहता हूं, इसलिए यह मुझे अपने कोड-समापन ड्रॉपडाउन में Surface
के सभी गुण दिखा सकता है, और हाइलाइट कर सकता है चेतावनी अगर मैं गलत विधि कहता हूं, और इसी तरह।
क्या कोई तरीका है कि मैं PyCharm को एक संकेत दे सकता हूं, और कह सकता हूं "psst, यह पैरामीटर टाइप एक्स का होना चाहिए"? (या शायद, गतिशील भाषाओं की भावना में, "इस पैरामीटर माना जाता है एक एक्स की तरह नीम हकीम के लिए" मैं उस के साथ ठीक हो जाएगा?।)
संपादित करें: CrazyCoder का जवाब नीचे दिए गए, करता है छल। जो त्वरित सारांश चाहते मेरे जैसे किसी भी नए चेहरे के लिए, यहाँ यह है:
class King:
def repress(self, peasant):
"""
Exploit the workers by hanging on to outdated imperialist dogma which
perpetuates the economic and social differences in our society.
@type peasant: Person
@param peasant: Person to repress.
"""
peasant.knock_over() # Shows a warning. And there was much rejoicing.
प्रासंगिक हिस्सा docstring की @type peasant: Person
रेखा है।
यदि आप फ़ाइल> सेटिंग्स> पायथन इंटीग्रेटेड टूल्स पर भी जाते हैं और "एपटेक्स्ट" में "डॉकस्ट्रिंग प्रारूप" सेट करते हैं, तो PyCharm's View> त्वरित दस्तावेज़ीकरण लुकअप केवल सभी @ -lines प्रिंट करने के बजाय पैरामीटर जानकारी को सुंदर प्रिंट करेगा जैसा है।
उल्लेखनीय यह है कि reStructuredText टिप्पणी ही टैग सिर्फ अलग ढंग से लिखा का उपयोग करें: '@param xx: yyy' हो जाता है': param xx: yyy'। देखें http://www.jetbrains.com/pycharm/webhelp/creating-documentation-comments.html – Wernight
हम पूरी तरह से योग्य वर्ग नाम निर्दिष्ट नहीं करने के साथ क्यों दूर हो सकते हैं? – aitchnyu