2012-01-27 18 views
5

Gần đây tôi đã chọn PyCharm và tôi đã quen với một tính năng từ Wing, nơi bạn có thể nói cho IDE lớp nào một định danh cụ thể (biến, thuộc tính, bất kỳ thứ gì) sẽ là. Ví dụ:Có cách nào để nói rõ ràng cho PyCharm lớp thuộc tính nào là một thể hiện của?

my_object = SomeClass() 
assert isinstance(my_object.my_attribute, SomeOtherClass) 

Tại thời điểm này, Wing biết chính xác những gì my_object.my_attribute là ngay cả khi nó có thể không khác con số nó ra từ phân tích mã nguồn.

Tôi đang tìm một tính năng tương tự trong PyCharm. Tôi biết những gì một thuộc tính cụ thể của một đối tượng là, nhưng PyCharm không, vì vậy làm thế nào tôi có thể nói với nó, vì vậy nó có thể cho tôi hoàn thành tiện dụng?

câu hỏi liên quan: Tôi cũng làm thấy một câu hỏi tương tự, How can I tell PyCharm what type a parameter is expected to be?, nhưng nó không bao gồm các thuộc tính , chỉ cần các thông số.

Trả lời

7

Thực ra PyCharm cũng hiểu cú pháp 'assert isinstance', nhưng chỉ cho các tham chiếu không đủ điều kiện. Tôi đã nộp một vấn đề để hỗ trợ này để tham khảo có trình độ cũng như:

http://youtrack.jetbrains.net/issue/PY-5614

Trong phiên bản hiện tại, bạn có thể chỉ định các loại my_attribute bằng cách vào phần khai báo của SomeClass và thêm một epydoc hoặc docstring Sphinx cho thuộc tính.

2

này đang làm việc cho tôi (2.6.2)

class Rule (object): 
    def __init__(self, *args): 
     self.criteria = [] 
     """@type : list of Criterion""" 
     crit = self.criteria[0] 
     #on this line, code completion works for "crit" 
5

Nếu tôi hiểu câu hỏi của bạn một cách chính xác những gì bạn đang tìm kiếm là chung suy luận kiểu từ PyCharm. Đến từ một ngôn ngữ gõ tĩnh, tôi đã bối rối khi tôi sử dụng hoàn thành mã và các lựa chọn là về số lượng nội dung của thư viện python.

Tôi có FOUND trong PyCharm nó có tùy chọn để thu thập thông tin loại trong thời gian chạy và làm cho điều này có sẵn trong thời gian phát triển (tức là hoàn thành mã).

Đây là cách bạn làm ...

Preferences> Python Debugger> "Thu thập các loại thời gian chạy cho mã cái nhìn sâu sắc"

Như bạn "gỡ rối" bạn mã (không bạn không cần phải sử dụng điểm ngắt). PyCharm sẽ bắt đầu cung cấp các đề xuất tốt hơn cho tất cả điều hướng/hoàn thành mã.

Cheers

Picture of Debug Preferences

Các vấn đề liên quan