เมื่อพูดถึง Constructor และการมอบหมายและการเรียกเมธอด PyCharm IDE ค่อนข้างดีในการวิเคราะห์ซอร์สโค้ดของฉันและการหาว่าตัวแปรแต่ละชนิดควรเป็นอะไร ฉันชอบเมื่อมันถูกต้องเพราะมันให้ข้อมูลโค้ดที่สมบูรณ์และพารามิเตอร์ที่ดีและให้คำเตือนแก่ฉันถ้าฉันพยายามเข้าถึงแอตทริบิวต์ที่ไม่มีอยู่
แต่เมื่อพูดถึงพารามิเตอร์มันไม่รู้อะไรเลย ดร็อปดาวน์การทำให้โค้ดเสร็จสมบูรณ์ไม่สามารถแสดงอะไรได้เนื่องจากพวกเขาไม่รู้ว่าจะใช้พารามิเตอร์ประเภทใด การวิเคราะห์รหัสไม่สามารถมองหาคำเตือนได้
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 พารามิเตอร์นี้ควรจะเป็นประเภท X"? (หรือบางทีในจิตวิญญาณของภาษาแบบไดนามิก "พารามิเตอร์นี้ควรจะต้มตุ๋นเหมือน X" ฉันจะไม่เป็นไร)
แก้ไข:คำตอบของ 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.
ส่วนที่เกี่ยวข้องคือ@type peasant: Person
บรรทัดของ docstring
หากคุณไปที่ไฟล์> การตั้งค่า> เครื่องมือรวม Python และตั้งค่า "รูปแบบ Docstring" เป็น "Epytext" จากนั้นมุมมองของ PyCharm> การค้นหาเอกสารด่วนจะพิมพ์ข้อมูลพารามิเตอร์แทนการพิมพ์ @ -lines ตามที่เป็นอยู่ทั้งหมด
@param xx: yyy
:param xx: yyy
ดูjetbrains.com/pycharm/webhelp/…