Khi nói đến các hàm tạo, các bài tập và các lệnh gọi phương thức, PyCharm IDE khá giỏi trong việc phân tích mã nguồn của tôi và tìm ra loại biến nào nên có. Tôi thích nó khi nó đúng, bởi vì nó cung cấp cho tôi thông tin tham số và hoàn thành mã tốt và nó cho tôi cảnh báo nếu tôi cố truy cập vào một thuộc tính không tồn tại.
Nhưng khi nói đến thông số, nó không biết gì. Danh sách thả xuống hoàn thành mã không thể hiển thị bất cứ điều gì, vì họ không biết loại tham số sẽ là gì. Phân tích mã không thể tìm kiếm cảnh báo.
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
Điều này làm cho một số lượng ý nghĩa nhất định. Các trang web cuộc gọi khác có thể vượt qua bất cứ điều gì cho tham số đó. Nhưng nếu phương thức của tôi hy vọng một tham số có kiểu, giả sử, pygame.Surface
tôi muốn có thể chỉ ra điều đó cho PyCharm bằng cách nào đó, để nó có thể hiển thị cho tôi tất cả các Surface
thuộc tính trong trình đơn thả xuống hoàn thành mã của nó và làm nổi bật cảnh báo nếu Tôi gọi sai phương pháp, vân vân.
Có cách nào tôi có thể đưa ra gợi ý cho PyCharm và nói "psst, tham số này được cho là thuộc loại X" không? (Hoặc có lẽ, theo tinh thần của các ngôn ngữ động, "tham số này được cho là giống như một chữ X"? Tôi sẽ ổn với điều đó.)
EDIT: Câu trả lời của CrazyCoder, bên dưới, thực hiện mẹo. Đối với bất kỳ người mới nào như tôi muốn tóm tắt nhanh, đây là:
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.
Phần có liên quan là @type peasant: Person
dòng của doc Chuỗi.
Nếu bạn cũng đi đến Tệp> Cài đặt> Công cụ tích hợp Python và đặt "Định dạng chuỗi" thành "Epytext", thì Chế độ xem> Tài liệu nhanh của PyCharm sẽ in khá tốt thông tin tham số thay vì chỉ in tất cả các dòng @.
@param xx: yyy
trở thành:param xx: yyy
. Xem jetbrains.com/pycharm/webhelp/ từ