2012-01-27 25 views
5

Niedawno podjąłem PyCharm i jestem przyzwyczajony do funkcji Winga, w której można powiedzieć IDE, która klasa będzie identyfikatorem (zmienna, atrybut, cokolwiek). Na przykład:Czy istnieje sposób, aby jawnie powiedzieć PyCharm, która klasa jest atrybutem instancji?

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

W tym momencie, Skrzydło wie dokładnie co my_object.my_attribute jest nawet jeśli nie mogłyby ustalić to z analizy kodu źródłowego.

Poszukuję podobnej funkcji w PyCharm. Wiem, jaki jest konkretny atrybut obiektu, ale PyCharm go nie ma, więc jak mam to powiedzieć, aby mógł mi on zapewnić przydatne uzupełnienia?

pokrewne pytanie: ja również widzę podobne pytanie, How can I tell PyCharm what type a parameter is expected to be?, ale nie obejmuje atrybuty, tylko parametry.

Odpowiedz

7

W rzeczywistości PyCharm również rozumie składnię "aserserinstance", ale tylko dla niewykwalifikowanych odniesień. Mam wniosła sprawę do poparcia tej wykwalifikowanych odniesień, a także:

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

W obecnej wersji, można określić typ my_attribute przechodząc do deklaracji SomeClass i dodanie epydoc lub sfinks docstring dla atrybutu.

2

To działa dla mnie (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

Jeśli rozumiem Twoje pytanie poprawnie, czego szukasz, jest ogólny typ wnioskowanie z pycharm. Opierając się na statycznie napisanym języku, byłem zaskoczony, gdy użyłem uzupełniania kodu, a wybory były tak liczne, jak zawartość biblioteki python.

Znalazłem, że w PyCharm ma opcję zbierania informacji o typie w czasie wykonywania i udostępnia tę informację w czasie programowania (tj. Uzupełnianie kodu).

Oto jak to zrobić ...

Preferencje> Python Debugger> "Collect typu run-time dla kodu wglądu"

jak ty "debug" ty kodu (nie nie masz do użyj punktu przerwania). PyCharm rozpocznie dostarczanie lepszych sugestii dla wszystkich nawigacji/uzupełnienia kodu.

Cheers

Picture of Debug Preferences

Powiązane problemy