Ketika sampai pada konstruktor, dan penugasan, dan pemanggilan metode, PyCharm IDE cukup bagus dalam menganalisis kode sumber saya dan mencari tahu tipe apa yang harus dimiliki setiap variabel. Saya suka ketika itu benar, karena itu memberi saya penyelesaian kode dan parameter info yang baik, dan itu memberi saya peringatan jika saya mencoba mengakses atribut yang tidak ada.
Tetapi ketika datang ke parameter, ia tidak tahu apa-apa. Dropdown penyelesaian kode tidak dapat menampilkan apa pun, karena mereka tidak tahu tipe parameter apa yang akan ditampilkan. Analisis kode tidak dapat mencari peringatan.
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
Ini masuk akal. Situs panggilan lain dapat melewatkan apa pun untuk parameter itu. Tetapi jika metode saya mengharapkan parameter bertipe, katakan,, pygame.Surface
saya ingin dapat menunjukkan hal itu kepada PyCharm, jadi itu bisa menunjukkan semua Surface
atribut dalam dropdown penyelesaian kode, dan menyoroti peringatan jika Saya menyebut metode yang salah, dan seterusnya.
Apakah ada cara saya bisa memberi PyCharm petunjuk, dan mengatakan "psst, parameter ini seharusnya tipe X"? (Atau mungkin, dalam semangat bahasa dinamis, "parameter ini seharusnya dukun seperti X"? Aku akan baik-baik saja dengan itu.)
EDIT: Jawaban CrazyCoder, di bawah, berhasil. Untuk pendatang baru seperti saya yang menginginkan ringkasan cepat, ini dia:
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.
Bagian yang relevan adalah @type peasant: Person
garis docstring.
Jika Anda juga pergi ke File> Settings> Python Integrated Tools dan mengatur "Format Docstring" ke "Epytext", maka PyCharm's View> Quick Documentation Lookup akan mencetak informasi parameter dengan cantik, bukan hanya mencetak semua @ -baris sebagaimana adanya.
@param xx: yyy
menjadi:param xx: yyy
. Lihat jetbrains.com/pycharm/webhelp/…